C#发行版仍有.pdb文件

时间:2010-03-03 12:11:04

标签: c# pdb-files release-mode

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

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

如果是这样,我怎样才能完全抑制二进制文件中产生的任何调试信息?你也知道释放.pdb的原因吗? Release配置已选中Optimize code,仅定义了TRACE常量,而不是DEBUG

感谢您的协助。

5 个答案:

答案 0 :(得分:92)

如果要禁用pdb文件生成,则需要在点击位于"Advanced build settings"标签下方的"Advanced..."按钮后使用项目属性中提供的Build对话框

Output - Debug info:设置为None以获取发布版本配置,并且不会生成任何pdb文件。

答案 1 :(得分:47)

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

答案 2 :(得分:13)

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

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

答案 3 :(得分:13)

您可以在Build - >下的项目属性中控制pdb /符号生成。高级... - >调试信息:。选项包括:

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

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

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

答案 4 :(得分:7)

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

有关此主题的更多信息,请阅读这些blog entries