Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C“类别声明”;“来自元数据”;_C#_Visual Studio_Class - Fatal编程技术网

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

C# C“类别声明”;“来自元数据”;,c#,visual-studio,class,C#,Visual Studio,Class,我注意到在Visual Studio中,有些类有一个选项,如果查看它们的定义,实际上看不到定义,只看到类的声明和一些文档,例如: 有人知道如何使我的类产生类似的文件吗? 谢谢如果Visual Studio找不到包含实际文件位置和编译代码中的行号信息的PDB文件,则这是默认行为 如果包含来自另一个解决方案的引用程序集,然后重命名包含代码的文件夹,则此操作应该有效。从引用位置移除PDB,您将看到此大纲 对于开发人员来说,显示代码是一项功能:它可以帮助您调试和分析所构建程序集中的问题。所以我建议你保持

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

有人知道如何使我的类产生类似的文件吗?
谢谢

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

如果包含来自另一个解决方案的引用程序集,然后重命名包含代码的文件夹,则此操作应该有效。从引用位置移除PDB,您将看到此大纲


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

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

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

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

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


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

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

  • 该类在引用的程序集中定义,PDB文件可用
    ->
    您将被导航到从PDB文件提取的源代码。您可以调试它(但是,您不能编辑它)

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


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

    将所需的类移动到其他程序集(dll)并从应用程序中引用此dll即可。您无法看到实现,因为您正在浏览外部程序集,需要先对其进行反编译。我相信这是一个很好的解释