Answers:
我认为从其他答案中可以明显看出,即使未将解决方案文件用于官方构建,它们也应该提交。对于使用诸如转到定义/声明之类的Visual Studio功能的任何人来说,它们都很方便。
默认情况下,它们不包含绝对路径或任何其他特定于机器的工件。(不幸的是,某些加载项工具无法正确维护此属性,例如AMD CodeAnalyst。)如果您谨慎使用项目文件中的相对路径(C ++和C#),它们将与计算机无关太。
可能更有用的问题是:您应该排除哪些文件?这是我的VS 2008项目的.gitignore文件的内容:
*.suo
*.user
*.ncb
Debug/
Release/
CodeAnalyst/
(最后一个条目仅用于AMD CodeAnalyst分析器。)
对于VS 2010,还应该排除以下内容:
ipch/
*.sdf
*.opensdf
你绝对应该拥有它。除了其他人提到的原因之外,还需要使整个项目的一步构建成为可能。
我通常同意应签入解决方案文件,但是在我工作的公司,我们做了一些不同的事情。我们有一个相当大的存储库,开发人员会不时在系统的不同部分上工作。为了支持我们的工作方式,我们将拥有一个大解决方案文件或多个小解决方案文件。两者都有一些缺点,需要开发人员进行手动操作。为了避免这种情况,我们制作了一个插件来处理所有这些问题。
通过该插件,每个开发人员只需从存储库中选择相关项目,即可签出要处理的源树子集。然后,插件会生成解决方案文件,并针对给定的解决方案即时修改项目文件。它还处理引用。换句话说,开发人员要做的就是选择适当的项目,然后生成/修改必要的文件。这也使我们能够自定义各种其他设置以确保公司标准。
另外,我们使用该插件来支持各种签入策略,这通常可以防止用户向存储库提交错误/不合规的代码。
是的,您应该提交的内容是:
你应该事不承诺是:
关于其他自动生成的文件,有一个单独的线程。
我们这样做是因为它使所有内容保持同步。所有必要的项目都放在一起,并且没有人会担心丢失一个项目。我们的构建服务器(Ant Hill Pro)也使用sln来确定要为发行版本构建的项目。
我们将文件或解决方案文件保留在TFS版本控制中。但是由于主解决方案确实很大,所以大多数开发人员都有一个仅包含他们所需内容的个人解决方案。主要解决方案文件主要由构建服务器使用。