是否应将obj / Debug中的.pdb文件添加到源代码管理中?

时间:2015-12-15 16:10:04

标签: .net visual-studio version-control remote-debugging pdb-files

关于处理 .pdb 文件的最佳做法,网上有一些相互矛盾的信息,我将非常感谢您的澄清。

例如,this来源说“PDB文件与源代码一样重要”,而this表示.pdbs不属于源代码控制。

  1. 在正常开发(调试模式)期间由build生成的.pdb文件是否应该提交给源代码管理?
  2. 是否只应将用于发布/生产的.pdb文件存储在源代码管理中?
  3. 我希望第一个问题的答案是“不”,第二个问题的答案是“是”,但我可能会遗漏一些东西。

3 个答案:

答案 0 :(得分:1)

PDB文件不应该进入源代码管理。它们是构建工件的一部分,应该与构建的输出一起保存(而不是在构建后丢弃)。应保留历史版本,并应跟踪当前发布的部署的版本,以便在需要时可以从相应的存档版本中提取PDB。

答案 1 :(得分:1)

除了Craig W.的正确回答:

除了sourceControl系统(例如svn / git)之外,您还应该使用构建系统来存档任何构建。

一个不错的构建系统是Jenkins,它是一个易于理解的构建系统,具有我期望的所有功能。如果您分发您的软件,您登录jenkis并点击“立即构建”。 Jenkins然后从svn / git检出当前版本并构建您的软件(使用批处理)并保存所有文件,包括调试/符号文件。 jenkins每次都应该增加二进制文件的内部版本号,并且应该将内部版本号设置为二进制文件(dll和exe)。在崩溃时你会看到事件查看器中的版本,并且可以从包括源的崩溃版本中获取所有文件。

我还建议将jenkins构建号写入二进制文件。因此你总是可以登录jenkins选择内部版本号然后你得到所有调试文件,并在日志中看到它是由它构建的svn版本(因此你也可以检查正确的源代码)。对于版本控制dll或exe文件,您可以使用(在.net中使用脚本编辑配置文件):http://www.codeproject.com/KB/install/VerPatch.aspx?msg=3207401并将其集成到构建批处理中。

在这里你找到了jenkins:https://jenkins-ci.org/

答案 2 :(得分:0)

请参阅SO上的this post。您不需要将* .pdb文件添加到源代码管理中。启动新的调试会话时会生成这些文件。