元数据来自.NET(Visual Studio 2012)

时间:2013-10-08 12:56:29

标签: c# .net vb.net .net-4.0

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

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

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

1 个答案:

答案 0 :(得分:2)

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

是的,C#IDE和VB.NET IDE使用不同的方法来解决这个问题。否则会产生两个非常不同的团队的副作用,这个团队在IDE演变中缺乏共性。几十年来,Visual Basic已经获得了IDE支持,C#是这个街区的新生儿,其背后的团队需要从13年前开始。

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