Subversion和Visual Studio项目的最佳实践

Ale*_*all 60 c# svn visual-studio-2010 svnignore

我最近开始在各种C#项目的工作在Visual Studio中作为将被用于替换这与C语言编写,Perl的各种程序和脚本的补鞋,一起建立了我们目前的系统大规模系统计划的一部分.我正在进行的项目已经达到了致力于颠覆的临界质量.我想知道什么应该和不应该提交到Visual Studio项目的存储库.我知道,这将产生那些刚刚建立的工件和并不真正需要提交的各种文件,我想知道是否有人有对正确使用SVN使用Visual Studio的任何建议.目前,我正在使用带有Visual Studio 2010 beta的SVN 1.6服务器.欢迎任何建议,意见.

Jus*_* R. 89

根据MSDN:

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

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

无法添加到源代码管理的文件包括以下内容:

  • 解决方案用户选项文件(*.suo).
  • 项目用户选择的文件,例如*.csproj.user,*.vbproj.user文件.
  • 网络信息的文件,例如*.csproj.webinfo,*.vbproj.webinfo中,控制Web项目的虚拟根位置.
  • 例如,构建输出文件*.dll*.exe文件.

  • 这是一个很好的清单.基本上,您需要编译项目所需的最小文件集. (2认同)
  • 使用 Visual Studio 2015 的用户还希望从源代码管理中排除“.vs”文件夹。请参阅http://stackoverflow.com/q/31526899/2615878。 (2认同)

Gra*_*meF 16

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

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

  • 我尝试过AnkhSVN,发现它倾向于过早地将IDE中的操作解释为源代码控制上的操作,并鼓励开发人员进行单文件提交.我对Tortoise感到高兴. (3认同)

Mic*_*urr 15

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

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

不要把下面的文件版本控制:

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

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

至于可执行文件和其他生成的文件 - 如果您希望能够存档版本,则可能会有异常.这可能是一个好主意,但您可能希望以不同的方式管理它,并且可能在与源代码不同的地方.如果这样做,还要归档.pdb文件,以便稍后调试.您可能希望使用符号服务器来存储已存档的符号(请参阅符号服务器及其文档的Windows调试工具).

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

Ankh.Load
*.projdata
*.pdb
*.positions
*proj.user
*proj.*.user
*.ncb
*.suo
*.plg
*.opt
*.ilk
*.pch
*.idb
*.clw
*.aps
Run Code Online (Sandbox Code Playgroud)


adr*_*nks 11

解决方案级别

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

项目级别:

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

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

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


一旦你设置了你的忽略,检查你的源的干净副本然后建立应该没有显示任何修改(即没有新的无版本文件).


And*_*llo 5

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

我的全局忽略模式是:

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