C#发行版仍然有.pdb文件
我想在C#中部署我的应用程序的发行版本。
当我使用Release
configuration构build时,仍然可以看到生成了.pdb
文件,这意味着我的应用程序仍然可以被debugging。 这也意味着一些debugging信息出现在我的代码的某个地方,稍微放慢一点。
如果这是真的,我怎样才能完全禁止在二进制文件中产生的任何debugging信息? 你也知道释放.pdb
的原因吗? Release
configuration检查了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
文件并不相互排斥,以优化代码。
有关此主题的更多信息,请阅读这些博客 条目 。