61

我最近开始在 Visual Studio 中处理各种 C# 项目,作为大型系统计划的一部分,该计划将用于替换我们当前的系统,该系统是由用 C 和 Perl 编写的各种程序和脚本拼凑而成的。我现在正在从事的项目已经达到了致力于颠覆的临界质量。我想知道什么应该和不应该提交到 Visual Studio 项目的存储库。我知道它会生成各种只是构建工件并且不需要提交的文件,我想知道是否有人对正确使用 SVN 和 Visual Studio 有任何建议。目前,我正在使用带有 Visual Studio 2010 beta 的 SVN 1.6 服务器。欢迎任何建议,意见。

4

7 回答 7

90

根据 MSDN

您可以将以下文件添加到 Visual Studio 源代码管理:

  • 解决方案文件 ( *.sln)。
  • 项目文件,例如*.csproj*.vbproj文件。
  • 基于 XML 的应用程序配置文件,用于控制 Visual Studio 项目的运行时行为。

您无法添加到源代码管理的文件包括:

  • 解决方案用户选项文件 ( *.suo)。
  • 项目用户选项文件,例如*.csproj.user*.vbproj.user文件。
  • 控制 Web 项目的虚拟根位置的Web 信息文件,例如 , *.csproj.webinfo*.vbproj.webinfo
  • 例如,构建输出文件*.dll*.exe文件。
于 2009-11-14T01:39:21.793 回答
16

我建议使用AnkhSVN - Visual Studio 2008/2010 的 Subversion 源代码控制插件。

您可以使用它来执行解决方案、项目和源的初始添加和提交到存储库,它不会添加任何构建工件。它不会添加您的构建生成的任何内容,只会添加您的解决方案引用的文件。如果您的解决方案中没有您需要的任何其他点点滴滴,您可以在之后添加它们。

于 2009-11-14T01:03:23.613 回答
15

将以下文件放入版本控制中:

  • .dsw(VS6 工作区)
  • .dsp(VS6 项目)
  • .sln(VS 解决方案)
  • .*proj(各种类型的VS项目文件)
  • 当然,您创建的源文件和其他工件

不要以下文件放入版本控制中:

  • .ncb(与浏览或智能感知有关)
  • .suo(用户工作区设置,如窗口放置等 - 我认为)
  • .user(用户项目设置,如断点等 - 我认为)

此外,不要放入任何目标文件、可执行文件、自动生成的文件(如可能生成的标头)。

至于可执行文件和其他生成的文件 - 如果您希望能够存档发布,则可能会有例外。这可能是个好主意,但您可能希望以与源代码不同的方式管理它,并且可能在不同的位置。如果你这样做,还要存档你的 .pdb 文件,以便以后调试这些东西。您可能希望使用符号服务器来存储您归档的符号(有关符号服务器及其文档,请参阅Windows 调试工具)。

这是我从 SVN 中排除的 VS 特定文件的列表:

Ankh.Load
*.projdata
*.pdb
*.positions
*proj.user
*proj.*.user
*.ncb
*.suo
*.plg
*.opt
*.ilk
*.pch
*.idb
*.clw
*.aps
于 2009-11-14T01:04:48.060 回答
11

解决方案级别:

  • 添加.sln解决方案文件
  • 忽略.suo解决方案用户选项文件

项目级别:

  • 添加.csproj, .vbproj(和 c++ proj?)文件
  • 忽略.csproj.user,.vbproj.user文件
  • 忽略bin目录
  • 忽略obj目录
  • 忽略运行时生成的任何文件/目录(即日志)

如果您使用 VS 插件,它们可能会生成也需要忽略的文件(即 ReSharper 生成.resharper.resharper.user文件)。

忽略项可以通过文件名(即。MyProject.csproj)或通配符模式(即。*.csproj.user)显式忽略。


一旦你设置了你的忽略,检查你的源代码的干净副本然后构建应该显示没有修改(即没有新的未版本化文件)。

于 2009-11-14T01:03:13.350 回答
5

我会手动包含我认为不应该进行版本控制的所有文件。

我的全局忽略模式是:

.dll .pdb .exe .cache .webinfo .snk bin obj 调试 _Resharper .user resharper

于 2009-11-14T01:04:19.230 回答
2

如果您使用忽略列表,SVN 区分大小写。所以记得分别忽略 bin 和 Bin 文件夹。

另外,我有一个问题..为什么刷新状态图标需要很多时间?有时它会变得非常混乱。

于 2010-05-27T19:26:52.393 回答
1

有关Mercurial 忽略列表,请参阅Visual Studio 2008 项目的 Mercurial .hgignore 。我不熟悉 SVN 忽略列表的语法,但这个线程有一些很好的列表,列出了在 Visual Studio 中要忽略的内容。

于 2010-06-15T10:58:26.290 回答