C#发行版仍然有.pdb文件

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

当我使用Releaseconfiguration构build时,仍然可以看到生成了.pdb文件,这意味着我的应用程序仍然可以被debugging。 这也意味着一些debugging信息出现在我的代码的某个地方,稍微放慢一点。

如果这是真的,我怎样才能完全禁止在二进制文件中产生的任何debugging信息? 你也知道释放.pdb的原因吗? Releaseconfiguration检查了Optimize code ,只定义了TRACE常量,而不是DEBUG

感谢您的协助。

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

Output - Debug info:None版本构buildconfiguration,并且不会生成pdb文件。

缺省是为发布版本生成PDB。 这是一个function,你不应该禁用它。 生成PDB意味着您可以在debugging时获得更多信息。 代码的性能不会受到PDB文件的影响。

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

  • 没有 (没有符号信息)
  • 完整 (一个.pdb将被生成,并且一些符号信息被embedded到程序集中)
  • 仅限pdb (将生成.pdb,但程序集不受影响)

请参阅http://msdn.microsoft.com/en-us/library/8cw0bt21%28VS.80%29.aspx以获取更多信息。;

强烈build议你selectpdb-only选项, 而不是 none选项,因为它仍然给你一些符号信息而不影响程序集 – 你可能会发现这是你在发布版本上的当前设置。

您不必在发布部署中发布.PDB,但是它们对于保持身边状态非常有用 – 例如,您可以使用计算机上的PDB远程debugging在另一台计算机上运行的代码,以获取例外的行号发生。

如果没有使用.PDB,行号和文件名不包含在堆栈跟踪中,所以debugging起来更加困难。

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

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