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

将.sln文件提交到源代码控制是否是最佳做法? 什么时候适合或不适宜?

更新在答案中有几个好的观点。 感谢您的回应!

我认为从其他答案中可以清楚地看到,解决scheme文件是有用的,应该承诺,即使它们不用于官方构build。 对于任何使用Visual Studiofunction的人来说,它们都非常方便,如“转到定义/声明”。

默认情况下,它们不包含绝对path或任何其他机器特定的工件。 (不幸的是,一些插件工具没有正确地维护这个属性,例如AMD CodeAnalyst。)如果你在你的项目文件(包括C ++和C#)中使用相对path的话,他们将是机器独立的太。

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

*.suo *.user *.ncb Debug/ Release/ CodeAnalyst/ 

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

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

 ipch/ *.sdf *.opensdf 

是的 – 我认为这总是合适的。 用户特定的设置在其他文件中。

是的,你应该这样做。 解决scheme文件仅包含有关解决scheme整体结构的信息。 这些信息对于解决scheme来说是全球性的,对于项目中的所有开发人员来说可能是共同的

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

你一定要拥有它。 除了别人提到的原因之外,还需要把整个项目的一步一步做好。

我普遍认为应该检查解决scheme文件,但是在我工作的公司,我们做了一些不同的事情。 我们有一个相当大的仓库,开发人员不时在系统的不同部分工作。 为了支持我们的工作方式,我们可能会有一个大的解决scheme文件或者更小的文件。 这两个都有一些缺点,需要开发人员手动工作。 为了避免这种情况,我们做了一个处理所有这些的插件。

插件让每个开发人员只需从存储库中select相关的项目,就可以检查出源树的一个子集。 然后插件生成一个解决scheme文件,并为给定的解决scheme即时修改项目文件。 它也处理参考。 换句话说,开发人员所要做的就是select合适的项目,然后生成/修改必要的文件。 这也使我们能够定制各种其他设置,以确保公司的标准。

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

是的,你应该犯的事情是:

  • 解决scheme(* .sln),
  • 项目文件,
  • 所有源文件,
  • 应用configuration文件
  • 构build脚本

你不应该犯的事情是:

  • 解决scheme用户选项(.suo)文件,
  • 构build生成的文件(例如,使用构build脚本) [编辑:] – 只有当所有必要的构build脚本和工具在版本控制下都可用时(以确保构build在CVS历史中是真实的)

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

是的,它应该是源代码pipe理的一部分。 当你从你的应用程序中添加/删除项目时,.sln会得到更新,并且在源代码控制下可能会很好。 这将允许你退出你的应用程序代码2版本,直接做一个构build(如果有需要的话)。

是的,您总是希望包含.sln文件,它包含解决scheme中所有项目的链接。

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

如果.sln文件是由其他工具(如CMake)生成的,那么把它们放到源代码pipe理中可能是不合适的。

我们这样做是因为它保持一切同步。 所有必要的项目都在一起,没有人担心错过。 我们的构build服务器(Ant Hill Pro)也使用sln来确定要发布的项目。

唯一的情况下,你甚至可以考虑不把它存储在源代码控制中,如果你有一个很大的解决scheme,许多项目在源代码控制,你想创build一个小的解决scheme,从一些主要解决scheme的项目私人短暂的要求。

是的 – 一切用于生成您的产品应该在源代码控制。

我们保留或解决文件在TFS版本控制。 但是因为或者主要的解决scheme真的很大,所以大多数开发者都有一个个人解决scheme,只包含他们需要的东西 主要的解决scheme文件主要由构build服务器使用。

我们通常把我们所有的解决scheme文件放在解决scheme目录中。 通过这种方式,我们将解决scheme从代码中分离出来,而且更容易挑选出我需要处理的项目。

.slns是我们在tfs中没有遇到过的唯一的问题!

1)在VS中创build一个新项目
2)右键单击解决scheme资源pipe理器中的解决scheme,select添加到源代码pipe理

是否将sln添加到源代码pipe理? 这是你的答案。