2009-11-14 33 views
58

我最近开始在Visual Studio中开发各种C#项目,作为大规模系统的计划的一部分,该系统将用于替换我们当前的系统,这些系统是通过一起构建的用C和Perl编写的各种程序和脚本。我现在正在努力的项目已经达到了致力于颠覆的临界水平。我想知道什么应该和不应该提交给Visual Studio项目的存储库。我知道它会生成各种文件,这些文件只是构建工件,并不需要提交,我想知道是否有人对Visual Studio中正确使用SVN有任何建议。目前,我正在使用Visual Studio 2010测试版的SVN 1.6服务器。任何建议,意见,欢迎。Subversion和Visual Studio项目的最佳实践

+1

这是VS2010 C#。例如,这与VS2010 C++有一些区别。给它标签C#。 – Bitterblue 2014-04-10 08:06:05

回答

86

According to MSDN

您可以将下列文件添加到Visual Studio源控制:

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

文件,你不能添加到源代码控制包括以下内容:

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

这是一个很好的清单。基本上你需要一小部分编译项目所需的文件。 – 2009-11-14 06:07:52

+0

有一个[case](http://stackoverflow.com/a/72370/4847772)用于提交'.user',至少在某些情况下。那些不添加的文件应该添加到['svn:ignore'](http://svnbook.red-bean.com/en/1.8/svn.advanced.props.special.ignore.html)。 – PJTraill 2015-05-27 16:30:10

+0

使用Visual Studio 2015的用户也希望从源代码控制中排除'.vs'文件夹。请参阅http://stackoverflow.com/q/31526899/2615878。 – Theophilus 2016-04-20 18:47:21

11

解决方案级别:

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

项目级别:

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

如果使用和VS加载项,他们可能会产生还需要忽略(即ReSharper的生成.resharper.resharper.user文件)的文件。

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


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

16

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

您可以使用它来执行解决方案,项目和源代码的初始添加和提交,并且不会添加任何构建工件。它不会添加由您的构建生成的任何内容,只包含您的解决方案引用的文件。如果您需要的任何其他零碎碎片都不在您的解决方案中,则可以在之后添加它们。

+2

我试过AnkhSVN,发现它倾向于过早地将IDE中的操作解释为源代码管理上的操作,并鼓励开发人员进行单文件提交。我对龟龟很开心。 – PJTraill 2015-05-27 16:25:49

+0

但它知道该忽略什么是有用的! – PJTraill 2015-05-27 16:31:26

5

我会手动包括所有文件,我认为我不应该版本控制。

我的全局忽略模式是:

.dll文件的.pdb的.exe .cache .webinfo .SNK斌OBJ调试_Resharper。用户ReSharper的

15

把以下文件的版本控制:

  • .DSW(VS6工作区)
  • .DSP(VS6项目)
  • 的.sln(VS解决方案)
  • * PROJ (各类VS项目文件),当然
  • 源文件和其他文物创建

把以下文件版本控制:

  • .NCB
  • 名为.suo(一些与浏览或intellsense做)(用户工作区的设置,如窗口位置,等等 - 我认为)
  • 。用户(用户项目设置例如断点,等等 - 我认为)

另外,不要把任何对象文件,可执行文件,自动生成的文件(比如,可能会产生头)。

至于可执行文件和其他生成的文件 - 如果您想要归档版本,可能会有例外。这可能是一个好主意,但是您可能想要以不同的方式管理它,并且可能与源代码位于不同的位置。如果你这样做,还要存档你的.pdb文件,以便以后调试。您可能需要使用Symbol Server来存储归档符号(有关符号服务器及其文档,请参阅Debugging Tools for Windows)。

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

Ankh.Load 
*.projdata 
*.pdb 
*.positions 
*proj.user 
*proj.*.user 
*.ncb 
*.suo 
*.plg 
*.opt 
*.ilk 
*.pch 
*.idb 
*.clw 
*.aps 
+0

Nit-picking:你说'不要放入...可执行文件',但是在下一段中,你可能会说! – PJTraill 2015-05-27 16:33:35

2

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

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