C# C“类别声明”;“来自元数据”;
我注意到在Visual Studio中,有些类有一个选项,如果查看它们的定义,实际上看不到定义,只看到类的声明和一些文档,例如: 有人知道如何使我的类产生类似的文件吗?C# C“类别声明”;“来自元数据”;,c#,visual-studio,class,C#,Visual Studio,Class,我注意到在Visual Studio中,有些类有一个选项,如果查看它们的定义,实际上看不到定义,只看到类的声明和一些文档,例如: 有人知道如何使我的类产生类似的文件吗? 谢谢如果Visual Studio找不到包含实际文件位置和编译代码中的行号信息的PDB文件,则这是默认行为 如果包含来自另一个解决方案的引用程序集,然后重命名包含代码的文件夹,则此操作应该有效。从引用位置移除PDB,您将看到此大纲 对于开发人员来说,显示代码是一项功能:它可以帮助您调试和分析所构建程序集中的问题。所以我建议你保持
谢谢如果Visual Studio找不到包含实际文件位置和编译代码中的行号信息的PDB文件,则这是默认行为 如果包含来自另一个解决方案的引用程序集,然后重命名包含代码的文件夹,则此操作应该有效。从引用位置移除PDB,您将看到此大纲
对于开发人员来说,显示代码是一项功能:它可以帮助您调试和分析所构建程序集中的问题。所以我建议你保持这种状态。不要太担心其他开发人员,如果您不发送PDB文件,他们将看不到Visual Studio中的代码。例如,他们仍然可以使用Reflector读取程序集的源代码。我认为这里必须解释一些基本的内容
- 源代码是一堆C#文件(.cs)。这就是类的代码所在
- 当您编译源代码时,您将得到一个程序集(.dll)。程序集包含有关类和编译的二进制代码的元数据,但不包含实际的源代码
- 当您编译源代码时,VisualStudio也会与程序集一起生成.PDB文件。PDB文件允许您查看程序集的源代码。PDB文件是调试所必需的。它有点类似于javascript源映射
现在,当在Visual Studio中转到类或方法的定义时,可能会发生以下情况:
->
您将被导航到源代码文件(.cs)->
您将被导航到从PDB文件提取的源代码。您可以调试它(但是,您不能编辑它)->
将导航程序集元数据。(这是你发布的图片上发生的事情)所以,您的问题的答案是:将您的程序集与.PDB和源代码隔离开来。但是,您应该知道,有些工具可以从程序集中的二进制代码中对C代码进行反向工程。它将与原始源代码不完全相同,但非常相似。将所需的类移动到其他程序集(dll)并从应用程序中引用此dll即可。您无法看到实现,因为您正在浏览外部程序集,需要先对其进行反编译。我相信这是一个很好的解释