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

.net 是否应该将obj/Debug中的.pdb文件添加到源代码管理中?,.net,visual-studio,version-control,remote-debugging,pdb-files,.net,Visual Studio,Version Control,Remote Debugging,Pdb Files,关于处理.pdb文件的最佳实践,网络上有一些相互矛盾的信息,请澄清 例如,source说“PDB文件和源代码一样重要”,而.PDB不属于源代码管理 正常开发(调试模式)期间生成的.pdb文件是否应提交给源代码管理 源代码管理中应该只存储用于发布/生产的.pdb文件吗 我希望第一个问题的答案是“否”,第二个问题的答案是“是”,但我可能遗漏了一些东西。请参见。您不需要将*.pdb文件添加到源代码管理中。这些文件是在启动新调试会话时生成的 PDB文件不应进入源代码管理。它们是构建工件的一部分,应该与构

关于处理.pdb文件的最佳实践,网络上有一些相互矛盾的信息,请澄清

例如,source说“PDB文件和源代码一样重要”,而.PDB不属于源代码管理

  • 正常开发(调试模式)期间生成的.pdb文件是否应提交给源代码管理
  • 源代码管理中应该只存储用于发布/生产的.pdb文件吗

  • 我希望第一个问题的答案是“否”,第二个问题的答案是“是”,但我可能遗漏了一些东西。

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

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

    除了Craig W.的正确答案外:

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

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

    我还建议将jenkins内部版本号写入二进制文件。因此,您始终可以登录到jenkins,选择构建编号,然后获取所有调试文件,并在日志中查看构建它的svn版本(因此您还可以签出正确的源代码)。对于可以使用的dll或exe文件版本控制(在.net中,使用脚本编辑配置文件):并将其集成到生成批处理中


    在这里你可以找到詹金斯夫妇:

    我认为这将是一个意见问题。我不会把它们放在源代码管理中,因为它们不是源代码。不过,我会将它们与发布的版本一起存储。您需要使用任何必要的过程来确保能够调试从客户那里获得的小型转储。小型转储是诊断无法重新编程的困难崩溃的唯一方法。这确实需要有适当的可执行文件和匹配的PDB,如果它们不匹配或时间戳不正确,您将非常困难。设置一个源服务器是最好的,在一个值得信赖的构建服务器上的副本可以工作,源代码管理并不是完全错误的。