是否应该.sln致力于源代码管理?

jle*_*bke 100 version-control projects-and-solutions visual-studio-2008 visual-studio

将.sln文件提交给源代码控制是最佳做法吗?什么时候适当或不恰当?

更新 答案中有几个好点.谢谢你的回复!

Tre*_*son 68

我认为从其他答案中可以清楚地看出,解决方案文件很有用并且应该提交,即使它们不用于官方构建.对于任何使用Go Studio定义/声明等Visual Studio功能的人来说,它们都很方便.

默认情况下,它们不包含绝对路径或任何其他特定于计算机的工件.(遗憾的是,某些加载项工具无法正确维护此属性,例如AMD CodeAnalyst.)如果您在项目文件中使用相对路径(包括C++和C#),它们将与机器无关太.

可能更有用的问题是:您应该排除哪些文件?这是我的VS 2008项目的.gitignore文件的内容:

*.suo
*.user
*.ncb
Debug/
Release/
CodeAnalyst/
Run Code Online (Sandbox Code Playgroud)

(最后一个条目仅适用于AMD CodeAnalyst分析器.)

对于VS 2010,您还应排除以下内容:

ipch/
*.sdf
*.opensdf
Run Code Online (Sandbox Code Playgroud)

  • +1 - 我个人也不提交任何构建的内容,因此bin /和obj / (9认同)
  • 我对单元测试结果也有一个忽略规则.有些人可能会检查它们,但我不喜欢混乱 (2认同)
  • 这是我的subversion Global ignore patter:*.vsmdi*.suo*/[Bb] in [Bb] in*/obj obj TestResults*.[Uu] ser*Thumbs.db*Web.Publish.xml*WebApplication.Publish. xml*Web.log (2认同)

Lou*_*nco 58

是的 - 我认为这总是合适的.用户特定设置位于其他文件中.

  • 绝对.sln引用了.prj文件(项目) (3认同)

Jar*_*Par 20

是的,你应该这样做.解决方案文件仅包含有关解决方案整体结构的信息.这些信息是解决方案的全球信息,对于项目中的所有开发人员来说都很常见.

它不包含任何用户特定设置.


Meh*_*ari 13

你一定要拥有它.除了其他人提到的原因之外,还需要使整个项目的一步构建成为可能.


Gro*_*roo 8

是的,你应该承诺的事情是:

  • 解决方案(*.sln),
  • 项目文件,
  • 所有源文件,
  • 应用配置文件
  • 构建脚本

你应该事承诺是:

  • 解决方案用户选项(.suo)文件,
  • 构建生成的文件(例如使用构建脚本)[编辑:] - 仅当版本控制下可用所有必需的构建脚本和工具时(确保构建在cvs历史记录中是可信的)

关于其他自动生成的文件,有一个单独的线程.

  • 是不是自动生成了Formname.Designer.cs文件? (2认同)

Bri*_*sen 8

我通常同意应该检查解决方案文件,但是,在我工作的公司,我们做了不同的事情.我们有一个相当大的存储库,开发人员不时在系统的不同部分工作.为了支持我们的工作方式,我们要么有一个大的解决方案文件,要么有几个小的.这两个都有一些缺点,需要在开发人员部分进行手动操作.为了避免这种情况,我们制作了一个处理所有这些的插件.

该插件允许每个开发人员只需从存储库中选择相关项目,就可以检查源树的子集.然后,该插件生成一个解决方案文件,并为给定的解决方案动态修改项目文件.它还处理引用.换句话说,开发人员所要做的就是选择适当的项目,然后生成/修改必要的文件.这也允许我们定制各种其他设置以确保公司标准.

此外,我们使用该插件来支持各种签入策略,这通常会阻止用户将错误/不合规的代码提交到存储库.


Arn*_*shn 5

是的,它应该是源代码控制的一部分.当你从应用程序中添加/删除项目时,.sln会得到更新,最好将它置于源代码管理之下.它允许您取出应用程序代码2版本并直接执行构建(如果需要).


Fer*_*cio 5

在大多数情况下,将.sln文件提交到源代码管理是一个好主意。

如果您的.sln文件是由其他工具(例如CMake)生成的,则将它们放入源代码管理中可能是不合适的。