1

我有一个 VS 2013 解决方案,其中一个 VB.NET ASP.NET 项目在同一解决方案中引用了多个 c# 类库项目(不是 DLL)。我在其中一个 c# 项目中的一些方法重载中对逻辑进行了很多更改。由于 VB.NET 项目广泛使用这些重载,我想看看有多少地方引用了这些方法。我转到包含更改的 c# 项目,右键单击我想要的重载,然后选择 Find All References,但它只显示 c# 项目中的引用。但是,当我转到 VB.NET 项目中的其中一种方法时,它会找到 VB.NET 项目中的所有引用以及 c# 项目中的方法声明。

我可以对方法名称进行解决方案范围的文本搜索,但是该方法名称会被多次使用,因为它已重载。因此,我想搜索特定的重载方法签名,而不是方法名称。

这是 VS 2013 的已知缺点吗?我还注意到我注意到的另一件事是,Go To Reference从 VB.NET 项目中选择在 ac# 项目中声明的方法将带您进入对象浏览器,而不是直接进入源项目本身中的方法定义.

4

1 回答 1

1

这是一个老问题,在微软的反馈网站上有很多关于它的错误反馈报告。规范的可能就是这个。引用达斯汀坎贝尔的回应:

一般的问题是 C# 和 Visual Basic 不共享任何关于符号表的公共基础结构,这些符号表用于查找所有引用、转到定义或重命名等功能。因此,此类功能不适用于多种语言。也就是说,我们正在寻找在未来改变这种情况的方法,但所需的工作量非常大。

稍微注释一下,C# 和 VB.NET IDE 表面上看起来很相似,但实际上它们却大不相同。部分原因是他们得到了微软内部不同团体的支持,这是任何软件公司的生存策略,大团体不起作用。但最重要的是历史在这方面发挥了重要作用,Visual Basic 在很长一段时间内都拥有强大的 IDE 支持。当他们迁移到 VB.NET 时,他们并没有放弃这项工作,至少因为他们必须支持所有以前的 IDE 功能,以免疏远他们现有的客户群。C# 团队在没有这些包袱的情况下有了新的开始,他们从头开始。不可避免地,它们之间的内部结构(例如 IntelliSense 符号表)完全不同。

解决“通用基础设施”问题并没有被遗忘,Roslyn 项目是重要的一步。花了很长时间才完成,但今天准备好了。集成到 VS2015 中。它是否真的解决了这个问题我还不知道,我会在几个月后解决。也许有RC版本的人可以确认。他们确实创建了两个版本的 Roslyn,一个用于 C#,另一个用于 VB.NET。哦哦。

于 2015-06-22T18:16:03.410 回答