Subversion和Visual Studio项目的最佳实践

时间:2009-11-14 00:47:35

标签: c# visual-studio-2010 svn svnignore

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

7 个答案:

答案 0 :(得分:89)

According to MSDN

  

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

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

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

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

答案 1 :(得分:16)

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

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

答案 2 :(得分:15)

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

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

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

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

另外,请勿放入任何目标文件,可执行文件,自动生成的文件(如可能生成的标题)。

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

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

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

答案 3 :(得分:11)

解决方案级别:

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

项目级别:

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

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

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


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

答案 4 :(得分:5)

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

我的全局忽略模式是:

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

答案 5 :(得分:2)

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

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

答案 6 :(得分:1)

有关Mercurial忽略列表,请参阅Mercurial .hgignore for Visual Studio 2008 projects。我不熟悉SVN忽略列表的语法,但是这个帖子有一些很好的列表,列出了Visual Studio中要忽略的内容。