【问题标题】:Which files in a Visual C# Studio project don't need to be versioned?Visual C# Studio 项目中的哪些文件不需要版本控制?
【发布时间】:2010-12-11 07:22:18
【问题描述】:

我是 Visual C# Studio 的新手(实际上使用的是 Express 版,但另一个开发人员使用的是完整版),我们正在使用版本控制 (svn)。

我可以接受将项目文件添加到存储库,因为此存储库仅供我们两个使用 Visual C# Studio 使用。但是感觉里面有一些不相关的文件。熟悉 Visual C# Studio 项目文件的人能告诉我哪些文件可以安全地被 svn:ignored 吗?

一些可疑文件:

  • project.csproj
  • project.csproj.Debug.cachefile
  • project.csproj.user
  • project.sln
  • project.suo
  • Content\Content.contentproj

我确定 .sln 是必需的,但这个 .suo 是什么?和.csproj? Visual C# Studio 在加载项目时可以/应该生成其中的任何一个吗?

【问题讨论】:

  • sln为解决方案文件,csproj为c#工程文件。您将需要这两个文件。 suo 是解决方案用户选项文件,顾名思义,您不需要该文件。它只包含用户选项。也可以忽略所有 .csproj. 文件。
  • msdn.microsoft.com/en-us/library/ee817674.aspx 来自微软的显式列表。

标签: c# visual-studio visual-studio-2008 svn


【解决方案1】:

不包括
垃圾箱
对象
*.suo
*.user
_Resharper*(如果你有Resharper

包括
*.sln
*.csproj

您也可以在 github 上查看.gitignore file for visual studio projects

【讨论】:

    【解决方案2】:

    .csproj 定义项目结构。这很重要。

    这是我在 Tortoise SVN 中添加到全局忽略列表中的内容:

    *.suo *.user bin obj *.pdb *.cache *_svn *.svn *.suo *.user *.build-res TestResults _ReSharper*
    

    【讨论】:

      【解决方案3】:

      不应进行版本控制:

      • .csproj.user 是用户的项目文件设置(例如启动项目)
      • .suo是用户的解决方案文件设置

      应该版本化:

      • .sln 是解决方案文件本身(它包含什么项目等)
      • .csproj 为工程文件

      我不确定“contentproj”,但它听起来像是一个项目文件,应该在 svn 下。

      【讨论】:

        【解决方案4】:

        .sln 文件与 .proj 文件一起定义您的解决方案(每个项目一个),因此请将它们保存在您的 svn 中!

        您可以跳过 .suo 文件(个人设置 - 无论如何都是二进制文件)以及 bin 或 obj 文件夹。 .cache 文件也可以保留。

        【讨论】:

          【解决方案5】:

          补充一点,在构建时重新生成的任何东西都应该被排除在外。例如,从 prebuild 事件或在某些情况下自定义工具生成的文件。

          【讨论】:

          • 并非总是如此。应检入由 SingleFileGenerator 生成的文件,以及与 .xaml、.resx 和表单相关的设计器生成的文件。
          • 这正是我说一些案例的原因。
          【解决方案6】:

          需要...

          *.sln - 解决方案文件包含对所有项目的引用以及项目之间的依赖关系。
          *.csproj - 项目文件本身。这些说明项目中包含哪些文件、引用以及项目的构建步骤。

          不是……

          *.suo - 这是一个用户设置文件...

          【讨论】:

            【解决方案7】:

            您肯定需要 csproj 文件...您可能想尝试 AnkhSVN 或 VisualSVN,那些 VS 插件只会将所需的文件添加到 SVN。

            或者您可以从目录结构中删除文件,直到它不再加载为止。

            我建议尝试这种方式,因为这是了解 VS 如何构建解决方案的好方法。

            【讨论】:

              【解决方案8】:

              我省略了 Visual Studio 解决方案用户选项文件 (*.suo) 和二进制文件目录,因为它们会在您每次构建解决方案时重新编译(binobj文件夹)。

              【讨论】:

                【解决方案9】:

                检查一下 - type visualstudio amd 您将为您生成一个 .gitignore 文件,如果您有一个包含多种语言的解决方案,您也可以将多种语言/ide'忽略文件连接在一起。

                【讨论】:

                  【解决方案10】:

                  正如其他答案中尚未指出的那样:

                  如果您将 Visual Studio 与 Unity 3D 一起使用,则可以安全地将 *.csproj 和 *.sln 添加到 .gitignore 文件中,与通常情况相反。

                  确实,项目结构是由 Unity 本身管理的,而不是由 Visual Studio 管理的。将它们保留在源代码管理中的唯一后果是冲突,如果由于某些原因在提交者之间使用不同的 Visual Studio 版本,则更是如此。

                  Unity 3D 的 .gitignore 示例:https://github.com/github/gitignore/blob/master/Unity.gitignore

                  【讨论】:

                    【解决方案11】:

                    我们还使用 Visual Studio C# 和 SVN,我不知道所有项目文件,但我们只排除了完整的 bin 目录。

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 2020-06-12
                      • 2021-02-06
                      • 2020-01-20
                      • 2013-06-04
                      • 2010-11-10
                      • 2015-07-13
                      • 2018-03-26
                      相关资源
                      最近更新 更多