C#类声明“来自元数据”

时间:2016-06-24 06:59:56

标签: c# visual-studio class

我注意到在Visual Studio中有些类有一个选项,如果你查看它们的定义,你实际上看不到定义只有类的声明和一些文档,例如:enter image description here

有谁知道如何让我的课程导致类似的文件? 感谢

2 个答案:

答案 0 :(得分:4)

如果Visual Studio无法找到包含有关实际文件位置和已编译代码中行号的信息的PDB文件,则这是默认行为。

如果您从其他解决方案中包含引用的程序集,然后重命名包含代码的文件夹,则此方法应该有效。从参考位置移除PDB,您将看到此轮廓。

对于您作为开发人员,显示代码是一项功能:它可以帮助您调试和分析已构建的程序集中的问题。所以我建议保持它。不要过于担心其他开发人员,如果你不发送PDB文件,他们就不会看到Visual Studio中的代码。例如,他们仍然可以使用Reflector读取程序集的源代码。

答案 1 :(得分:3)

我认为必须在这里解释一些基本内容。

  • 源代码是一堆C#文件(.cs)。这是您的类的代码

  • 当您编译源代码时,您将获得程序集(。dll)。程序集包含有关您的类和已编译二进制代码的元数据,但不包含实际的源代码。

  • 当您编译源代码时,Visual Studio还会与您的程序集一起生成 .PDB文件。 PDB文件允许您查看程序集的源代码。 PDB文件是调试所必需的。它有点类似于javascript源地图。

现在,在Visual Studio中,您转到定义类或方法时,可能会发生以下情况:

  1. 该类位于您的解决方案->中,您将导航到源代码文件(.cs)

  2. 该类在引用的程序集中定义,PDB文件可用->您将导航到从PDB文件中提取的源代码。您可以对其进行调试(但是,您无法对其进行编辑)。

  3. 该类在引用程序集中定义,并且PDB文件不可用->您将导航程序集元数据。 (这是你发布的图片上发生的事情)

  4. 所以回答你的问题是:将你的程序集与.PDB和源代码隔离开来。但是,您应该知道,有些工具可以从程序集中的二进制代码反向设计C#代码。它与原始源代码不完全相同,但非常相似。