2010-03-16 158 views
28

每当我开始一个新的软件时,我必须进入配置并关闭pdb文件生成和Visual Studio发布版本的托管过程。有没有什么办法可以告诉Visual Studio(特别是2008年),我希望在剩下的时间内为所有项目做到这一点?如何关闭所有发布版本的pdb生成和vshost

+0

为什么要关闭发布版本的PDB?请参阅http://stackoverflow.com/questions/2371032 – 2010-03-16 11:27:23

+1

我的工作主要是内部软件,我们没有自动构建(还),所以它只是另一个文件,在将构建传递给推出的人之前发布/取消选择该软件。我只是试图为他们和我做一些尽可能干净和容易的事情。 – 2010-03-16 11:31:16

+0

但是不提供PDB会使调试更加困难。 – 2010-03-16 11:37:24

回答

15

经过一番挖掘,看起来C#的项目文件存储在\program files\microsoft visual studio 9.0\common7\ide\projecttemplatescache\csharp\windows\1033中。通过将<UseVSHostingProcess>false</UseVSHostingProcess>添加到相关模板的正确部分(有调试和发布配置的单独部分),可以关闭所有类型的所有未来项目的托管过程。

你应该能够处理PDB问题以类似的方式,但正如我所说,我不建议打开这些了,所以我会离开它作为一个练习:)

这适用于VS2008 ,但我的猜测是其他版本也有类似的方案。实际上,VS2010使用相同的方法,但显然目录中的版本号是10.0而不是9.0。

+0

为了记录,并且由于Google引导我进入该线程,这个技巧也适用于VS2012(至少在托管过程中,要禁用PDB文件,所以没有尝试)。再次感谢你,让我的一天! – psycho 2013-06-19 09:43:54

+0

编译时,在我的'.csproj'文件中关闭此功能会导致'MSB3027'。也就是说,输出文件由于被锁定而无法写入。 – l33t 2013-10-07 10:33:52

+0

@ l33t你还记得关闭文件吗?如果它仍然打开,它将被锁定。我刚刚在VS2012上进行了验证。 – 2013-10-07 15:53:28

2

为什么不添加一个后期构建步骤,删除这些你不想要的文件。嗯,这又是一个步骤,不是你想要的:-(

如何编写一个小帮手应用程序,它执行FindFirstFile和FindNextFile循环来查找你的发布目录中的PDB和shost文件,当它发现它们时,它会删除或者更好地将它们移动到归档位置 - 这可以将它们从发布包装问题中移除,但仍然保留这些文件以防需要它们进行错误分析。

因为它的助手应用程序可以运行它曾经作为你的预发布的一部分释放人员。

我们使用这种技术处理很多事情:

  • 确保DLL是最新的(基本上为整个构建树的智能更新)
  • 清洁VC建立不是“批构建”可以(去掉一些那些可能会崩溃Visual Studio中的文件)
  • 存档更好某些特定的方式(类似于我建议你)

我与布莱恩 - 你应该保留这些文件。如果您需要调试任何错误或失败,您将需要这些文件。

+0

我同意 - 不要压制它们或删除PDB - 只要将它们从部署包中删除并将它们与您的构建一起存档即可:http://www.wintellect.com/CS/blogs/jrobbins/archive/2009 /05/11/pdb-files-what-every-developer-must-know.aspx – 2010-03-16 13:04:58

11

在VS 2010中,你会发现一个项目的属性来控制.PDB代在项目属性 - >生成 - >高级 - >调试信息

将其设置为“无”,以抑制.PDB产生。

+0

虽然这是按照每个项目的基础。当时我想永远为所有项目做一次这样的事情,而不是在每个项目建立和改变时都要进入这个项目。 – 2013-04-10 11:52:17