C#发行版仍有.pdb文件

Abr*_*ile 58 c# release-mode pdb-files

我想部署在C#中完成的应用程序的发布版本.

当我使用Release配置构建时,我仍然可以看到生成了.pdb文件,这意味着我的应用程序仍然可以调试.这也意味着我的代码中某处存在一些调试信息,从而使其速度降低一些.

如果是这样,我怎样才能完全抑制二进制文件中产生的任何调试信息?你也知道释放的原因.pdb吗?该Release配置具有Optimize code检查,并且只有TRACE常数被定义,而不是DEBUG.

谢谢你的帮助.

Mar*_*rek 95

如果要禁用pdb文件生成,则需要"Advanced build settings"在单击选项卡"Advanced..."下部的"按钮" 后使用项目属性中的对话框Build.

设置Output - Debug info:None用于发布版本的配置,没有PDB文件将被生成.


Bri*_*sen 49

默认情况下也是为发布版本生成PDB.这是一个功能,你不应该禁用它.生成PDB意味着您可以在调试时获得更多信息.PDB文件的存在不会以任何方式影响代码的性能.

  • 抱歉,但我不同意,发布版本应该是这样的:发布,不调试,不调试运行时依赖项。 (2认同)

And*_*lam 13

您不必在发布部署中发布.PDB,但它们对于保持有用非常有用 - 例如,您可以使用计算机上的PDB远程调试在不同计算机上运行的代码,以获取异常的行号发生.

如果不使用.PDB,行号和文件名不会包含在堆栈跟踪中,因此调试它们会更加困难.


Jus*_*tin 13

您可以在Build - > Advanced ... - > Debug info:下的项目属性中控制pdb/symbol生成.选项是:

  • (无符号信息)
  • full(将生成一个.pdb,并在程序集中嵌入一些符号信息)
  • 仅限pdb(将生成.pdb,但程序集不受影响)

有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/8cw0bt21%28VS.80%29.aspx.

强烈建议您选择pdb-only选项,而不是 none选项,因为它仍然会在不影响程序集的情况下为您提供一些符号信息 - 您可能会发现这是您在发布版本上的当前设置.


Meh*_*ari 7

让编译器生成.pdb文件与使其优化代码并不相互排斥.

有关此主题的更多信息,请阅读这些博客 条目.