Visual Studio 2010 调试二进制文件的版本控制。要保留哪些文件?
Posted
技术标签:
【中文标题】Visual Studio 2010 调试二进制文件的版本控制。要保留哪些文件?【英文标题】:Version Control for Visual Studio 2010 debug binaries. Which files to keep? 【发布时间】:2012-01-19 18:35:57 【问题描述】:我想对我的 Visual Studio 2010 调试版本进行版本控制。我将使用 git。现在所有项目文件都在“项目”中,输出二进制文件由 Visual Studio 放在“项目\调试”目录中。我在这里阅读了一些包含 Visual Studio 忽略列表的问题,但其中大多数都有一个忽略二进制文件的忽略列表,例如 obj exe idb pdb 之类等。
如果我希望将来能够调试我的 exe,我需要保留哪些文件?是否有任何理由保留 obj 文件? VS 在调试或跟踪崩溃期间是否完全使用它们?我想我应该至少保留 pdb 文件和 exe。所以这将是 project.exe、project.pdb 和 vc100.pdb。但是 vc100.idb、project.ilk、project.res... 等呢?是否有一个忽略列表会忽略保留二进制构建不需要的所有内容但保留所有内容?
我想确保如果用户在将来某个时间向我发送故障转储或报告问题,我可以返回到正在使用的版本并能够对其进行调试。我还希望在远程仓库中提供二进制文件和调试文件,以便其他人也可以使用。谢谢!
【问题讨论】:
【参考方案1】:不要将二进制文件保存在版本控制中。相反,从源代码构建。
由于二进制文件是从源代码构建的,并且您已经对源代码进行了版本化,因此只需根据需要重新构建特定版本。它既可以让您的版本控制系统保持精简和快速,也不会导致合并问题(二进制文件因此而臭名昭著)。
所以,答案是不要在版本控制中保留任何二进制文件。
如果您真的必须保留它们,那么只需将它们压缩并使用它们来自的构建标签将它们像普通文件一样存储。
【讨论】:
但我想将我的二进制文件保留在版本控制中。他们在一个单独的分支中,我知道如何处理合并冲突。 为什么你想把二进制文件保存在 VC 中?如果您对它们如何更改不感兴趣,那么只需将它们保存在文件系统中,因为它们是独立的、不同的文件。 使用您的版本控制和版本编号方案,以便在提交错误报告时,您可以轻松构建匹配的版本。不要将二进制文件保存在源代码管理中。 @cdeszaq 组织起来更容易。 但是你为拥有一个臃肿的存储库付出的代价超过了好处。 DVCS 并不是特别适合大型二进制 blob。 SVN 能够更好地处理它们,因为它不需要本地机器上的完整 repo 副本,但它仍然不是这项工作的理想工具。【参考方案2】:我将在分支中保留 project.exe 和 project.pdb。不需要像 *.obj
、*.ilk
和 *.sdf
这样的其他文件。 vc100.*
文件也不是。在与许多人亲自交谈并审查了这一点后,我做出了决定:
File Types Created for Visual C++ Projects
还有这个:
Which Visual C++ file types should be committed to version control?
虽然那个 SO 问题/答案没有回答我的问题,但它给了我很多很好的信息。我还查看了我的 project.pdb 中的所有文件引用,以确认我需要保留哪些文件在我的项目中。我在 windows 的调试工具中使用了这个命令:
srcsrv\srctool -r 项目.pdb
【讨论】:
您提出了一个问题,现在告诉我们您将要做什么,但不要解释原因。 为什么您认为有些文件是必需的(.pdb),而有些则不是(.obj、sdf 等)。你也说过它更容易组织,但没有解释为什么。对你来说更容易吗?对您的公司来说更容易吗? @ChristianPayne 我认为这是一个公平的观点,我会更新我的答案。以上是关于Visual Studio 2010 调试二进制文件的版本控制。要保留哪些文件?的主要内容,如果未能解决你的问题,请参考以下文章
我可以在 Windows XP 上使用 Visual Studio 2010 远程调试器从 Visual Studio 2012 调试 .Net 4.0 应用程序吗?
Visual Studio 2010 远程调试 - 无法连接:拒绝访问