【问题标题】:Conventions for storing Visual C# projects in an SVN repo在 SVN 存储库中存储 Visual C# 项目的约定
【发布时间】:2012-07-09 19:26:55
【问题描述】:

基本上我的问题是您将 C# 的 哪些 部分存储在存储库中?在我去年参加的一堂课上,有人告诉我,您永远不会将生成的文件存储在版本控制中(因此,如果您正在编写 c,请不要存储 .o/.exe 文件)。

但使用 c 很容易,因为您只需保存 .c、.h 和 makefile,您只需签出 repo,运行 make 文件,一切正常。

但是对于 Visual Studio 中的 C# 项目,我在决定要存储什么时遇到一些问题。

如果我只存储 .cs 文件,则很难将它们添加到其他计算机上的项目中。我也应该存储项目文件吗?

我遇到的问题是我以前只存储整个项目目录。但是当我将项目放在另一台计算机上时,它会抱怨temporaryKey是错误的(.pfx文件)......

那么我应该存储什么?

谢谢。

【问题讨论】:

    标签: c# svn version-control project


    【解决方案1】:

    他们按照我的方式做 - 我存储了所有内容,除了:

    • 解决方案中每个项目的binobj 目录
    • .user.suo 文件 - 它们包含用户特定的项目和解决方案选项
    • Resharper 生成的文件(Resharper 是一个 Visual Studio 扩展程序,可在解决方案文件夹中创建一些文件)

    基本上,经验法则是不要存储特定于特定机器或由工具生成的任何内容(无论是编译器还是 Visual Studio 扩展 - 在我的例子中是 Resharper)。

    【讨论】:

      【解决方案2】:

      该建议完全不适合大多数 C# 项目的工作方式,尤其是 UI - Visual Studio 生成设计器文件,例如,应该签入(否则其他获取源码将无法编译)。

      一般来说,不要存储编译产物——由您的代码生成的程序集。

      编译和运行不需要的项目(例如用户特定的设置文件)也不应签入。

      【讨论】:

        【解决方案3】:

        我同意其他所有人的意见 - 忽略二进制文件、.suo 和 .user - 但是我确实发现使用 AnkhSVN 可以大大简化这一点,因为您直接从 VS 提交并且它可以正常工作。

        【讨论】:

        • 对于使用 SVN 在 VS 中工作,我真的不能推荐它。它确实有一些烦恼(没有双击比较) - 但与使用它的主要收获相比,这些都是令人难以置信的小问题。
        • @NikolaAnusev 在选择 AnkhSvn 之前,我花了很长时间尝试其他选项。太棒了..
        • 我得到了ankh,它看起来真的很不错!但是您如何处理临时密钥文件? (.pfx)。您将它们添加到回购中吗? ...或者有没有办法根本不使用密钥(关闭签名或其他)
        【解决方案4】:

        我存储了整个解决方案文件夹,但我为 *.user、*.suo 文件添加了例外。我也没有提交任何 bin 和 obj 文件夹。

        【讨论】:

          【解决方案5】:

          我们将所有内容存储在解决方案文件夹及其子文件夹中。但是我们通过

          添加这些排除项
          `svn:ignore` = 
          *.suo
          *.ncb
          *.user
          _ReSharper.*
          [Bb]in
          [Oo]bj
          [Dd]ebug
          [Rr]elease
          

          供参考
          svn:ignore
          TortoiseSVN

          【讨论】:

          • 嗯,我将如何使用该语句? svn commit * ?
          • 同时我添加了对 TortoiseSVN 和 SVN Book 的引用
          【解决方案6】:

          其他人似乎已经涵盖了大部分内容,但我想我会加两分钱。我使用以下全局忽略模式进行 C# 开发。这包括系统文件和不需要的解决方案文件。

          *.o *.lo *.la *.al .libs *.so .so.[0-9] *.a *.pyc *.pyo .rej 。 ~ ~ ## .#* .*.swp .DS_Store thumbs.db Thumbs.db *.bak *.class *.dll *.exe *.mine *.obj *. ncb *.lib *.log *.idb *.pdb *.ilk *.msi *.res *.pch *.suo *.exp .~ .~ ~ . cvs CVS .CVS .cvs release Release debug Debug ignore Ignore obj Obj *.csproj.user *.user bin BIN

          有关 svn 的全局与本地忽略模式的更多信息,请查看此处:

          http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-ignore.html

          一般经验法则

          切勿存储任何生成的输出或用户特定设置。此外,如果可能,请避免存储不必要的二进制文件,因为它们无法使用上下文合并。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-05-02
            • 2023-03-18
            • 2015-10-25
            相关资源
            最近更新 更多