1

我以为我知道这个问题的答案,我通过反射理解它来自引用的库。但是,我有一种情况,我正在尝试使用用 VB.NET 编写的第二个参考程序来调试 C# 程序(也就是说,我正在尝试用 C# 重写 VB.NET 程序)。

我正在查看的特定代码使用引用的类,并且我的 C# 程序的 F12(转到定义)在新窗口中加载对象元数据;但是 VB.NET 程序中的相同操作将我带到对象浏览器,声称引用的 dll 位于不同的位置(它们都引用相同的库)。

这两种语言是否有可能在这样一个核心方面表现不同,或者是否有另一部分可以引用我不知道的库?

4

1 回答 1

3

仅当 IDE 知道该代码并且 IntelliSense 已对其进行解析时,Go To Definition 才能将您带到实际的源代码。如果项目不是同一个解决方案的一部分或不是用同一种语言编写的,它就不能这样做。程序集引用仅提供嵌入在程序集中的元数据。这只是描述类型,而不是代码。没有指向生成它的原始源代码的链接,除了通过 IntelliSense 不使用的调试器的 PDB 文件,因为不能依赖它存在和准确。

是的,C# IDE 和 VB.NET IDE 使用不同的方法来解决这个问题。否则会产生两个非常不同的团队一起工作的副作用,并且在他们的 IDE 演进中缺乏共性。Visual Basic 已经支持 IDE 几十年了,C# 是新来的,它背后的团队需要在 13 年前从头开始。

VB.NET IDE 确实突出了对象浏览器中的标识符,就像 15 多年前所做的那样。C# IDE 具有将程序集元数据反编译回可读 C# 代码的代码,并在编辑器窗口中显示生成的文本。C# 团队不选择 VB.NET 方法的确切原因肯定只有内部人员知道。

于 2013-10-08T15:31:48.253 回答