我想部署用C#编写的应用程序的发布版本。
当我使用Release
配置进行构建时,我仍然可以看到产生了.pdb
文件,这意味着我的应用程序仍然可以进行调试。这也意味着某些调试信息存在于我的代码中,会稍微减慢它的速度。
如果这是真的,那么我该如何完全禁止在二进制文件中产生任何调试信息?您是否也知道为什么会有发布版.pdb
文件?Release
配置已经选中了Optimize code
,并且只定义了TRACE
常量,而没有定义DEBUG
常量。
感谢您的协助。
我想部署用C#编写的应用程序的发布版本。
当我使用Release
配置进行构建时,我仍然可以看到产生了.pdb
文件,这意味着我的应用程序仍然可以进行调试。这也意味着某些调试信息存在于我的代码中,会稍微减慢它的速度。
如果这是真的,那么我该如何完全禁止在二进制文件中产生任何调试信息?您是否也知道为什么会有发布版.pdb
文件?Release
配置已经选中了Optimize code
,并且只定义了TRACE
常量,而没有定义DEBUG
常量。
感谢您的协助。
Build
选项卡底部的"Advanced..."
按钮后,在项目属性中使用可用的"高级构建设置"
对话框。Output - Debug info:
设置为None
以进行发布版本配置,并且不会生成pdb文件。MSBuild.exe YourProject.csproj /p:DebugSymbols=false /p:DebugType=None
。 - cowlinator默认情况下,会生成发布版本的 PDB 文件。这是一个功能,你不应该禁用它。生成 PDB 文件意味着你在调试时可以获得更多信息。PDB 文件的存在不会以任何方式影响代码的性能。
在项目属性下的“构建” -> “高级选项...” -> “调试信息:”中,您可以控制pdb /符号生成。可选项如下:
有关更多信息,请参见http://msdn.microsoft.com/en-us/library/8cw0bt21%28VS.80%29.aspx。
我强烈推荐您选择pdb-only选项,而不是none选项,因为它仍会提供一些符号信息,而不影响程序集——在发布版本上您可能已经选择了此设置。
del /S *.pdb
命令从主项目的后期构建命令或批处理文件中删除它们,这样您就可以选择是否运行它而无需编辑所有项目文件。if $(ConfigurationName) == Release del /S $(TargetDir)*.pdb