代码之家  ›  专栏  ›  技术社区  ›  Ben Mills

我应该将Visual Studio.suo和.user文件添加到源代码管理中吗?

  •  904
  • Ben Mills  · 技术社区  · 18 年前

    Visual Studio解决方案包含两种类型的隐藏用户文件。一个是解决方案 .suo 文件,它是一个二进制文件。另一个是项目 .user file是一个文本文件。这些文件究竟包含哪些数据?

    我还想知道是否应该将这些文件添加到源代码管理中(在我的例子中是Subversion)。如果我不添加这些文件,而另一个开发人员签出了解决方案,Visual Studio会自动创建新的用户文件吗?

    22 回复  |  直到 7 年前
        1
  •  637
  •   Sergey Sergey    12 年前

    这些文件包含通常特定于您的计算机的用户首选项配置,因此最好不要将其放在SCM中。此外,VS几乎每次执行时都会更改它,因此SCM将始终将其标记为“已更改”。 我也不包括在内,我在一个使用VS两年的项目中没有遇到任何问题。唯一的小烦恼是调试参数(执行路径、部署目标等)存储在其中一个文件中(不知道是哪个),所以如果你有一个标准,你就无法通过SCM“发布”它,让其他开发人员“准备好使用”整个开发环境。

        2
  •  131
  •   Steve Cooper    18 年前

    您不需要添加这些内容——它们包含每个用户的设置,其他开发人员不会想要您的副本。

        3
  •  66
  •   Wolf    9 年前

    其他人解释了为什么有 *.suo 和 *.user 受源代码管理的文件不是一个好主意。

    我建议你把这些图案添加到 svn:ignore 房产有两个原因:

    1. 所以其他开发人员不会结束 使用一个开发人员的设置。
    2. 因此,当您查看状态或提交时 文件,这些文件不会弄乱代码库,也不会掩盖您需要添加的新文件。
        4
  •  47
  •   Michael Eakins    12 年前

    我们不提交二进制文件(*.suo),但我们提交.user文件。例如,.user文件包含调试项目的启动选项。您可以在“调试”选项卡中的项目属性中找到启动选项。我们在一些项目中使用了NUnit,并将NUnit-gui.exe配置为项目的启动选项。如果没有.user文件,每个团队成员都必须单独配置它。

    希望这能有所帮助。

        5
  •  25
  •   Community Mohan Dere    9 年前

    自从我在2011年通过谷歌找到这个问题/答案以来,我想我会花点时间添加*的链接。将Visual Studio 2010创建的SDF文件添加到可能不应添加到版本控制的文件列表中(IDE将重新创建它们)。由于我不确定*.sdf文件在其他地方是否有合法用途,我只忽略了SVN中的特定[projectname].sdf文件。

    Why does the Visual Studio conversion wizard 2010 create a massive SDF database file?

        6
  •  22
  •   JRoppert    18 年前

    不,您不应该将它们添加到源代码管理中,因为正如您所说,它们是特定于用户的。

    SUO(解决方案用户选项):记录 您可能拥有的所有选项 与您的解决方案相关联,以便 每次打开它时,它都包括 您的自定义设置 已经做了。

    .user文件包含项目的用户选项(而SUO用于解决方案),并扩展了项目文件名(例如anything.csproj.user包含anything.csproj项目的用户设置)。

        7
  •  17
  •   cori    18 年前

    这似乎是微软对此事的看法:

    Adding (and editing) .suo files to source control

    我不知道为什么你的项目将DebugWorkingDirectory存储在 suo文件。如果这是用户特定的设置,您应该考虑 将其存储在*.proj.user文件名中。如果该设置是可共享的 在所有参与项目的用户之间,您应该考虑存储 它位于项目文件本身中。

    甚至不要考虑将suo文件添加到源代码管理中! SUO (solution用户选项)文件旨在包含用户特定的 设置,不应在使用相同设置的用户之间共享 解决方案。如果要在scc数据库中添加suo文件,我不会 知道IDE中除了源代码控制之外,还会破坏哪些其他东西 从这个角度来看,您将打破web项目scc集成,局域网vs 不同用户用于VSS访问的互联网插件,您可以 甚至导致scc完全中断(VSS数据库路径存储在 可能对您有效的suo文件可能对其他用户无效)。

    阿林·康斯坦丁(MSFT)

        8
  •  17
  •   Peter Mortensen Pieter Jan Bonestroo    8 年前

    默认情况下,Microsoft的Visual SourceSafe不将这些文件包含在源代码管理中,因为它们是用户特定的设置文件。如果你使用SVN作为源代码控制,我会遵循这个模型。

        9
  •  11
  •   Mike Becatti    18 年前

    Visual Studio将自动创建它们。我不建议把它们放在源代码控制中。有很多次,本地开发人员的SOU文件导致VS在该开发人员框上表现不稳定。删除文件,然后让VS重新创建它,总是可以解决问题。

        10
  •  10
  •   Farax    10 年前

    号码

    我只是想要一个简短的答案,但没有。

        11
  •  8
  •   ScaleOvenStove    18 年前

    上 MSDN website ,它明确指出

    解决方案用户选项(.suo)文件包含每个用户的解决方案 选项。 不应将此文件签入源代码管理 .

    所以我想说,在将内容签入源代码管理时忽略这些文件是相当安全的。

        12
  •  7
  •   Paxic    18 年前

    我不会。在源代码控制中,任何可能对每个“用户”进行更改的东西通常都是不好的。.suo、.user、obj/bin目录

        13
  •  6
  •   Peter Mortensen Pieter Jan Bonestroo    11 年前

    这些文件是用户特定的选项,应该独立于解决方案本身。Visual Studio将根据需要创建新的,因此不需要将其签入源代码管理。事实上,最好不要这样做,因为这允许单个开发人员根据自己的需要定制他们的环境。

        14
  •  6
  •   Wolf    9 年前

    您无法对.user文件进行源代码管理,因为这是特定于用户的。它包含远程机器的名称和其他依赖于用户的内容。这是一个与vcproj相关的文件。

    .suo文件是一个与sln相关的文件,它包含“解决方案用户选项”(启动项目、窗口位置(停靠的内容和位置、浮动的内容)等

    这是一个二进制文件,我不知道它是否包含“与用户相关”的内容。

    在我们公司,我们不会对这些文件进行源代码管理。

        15
  •  4
  •   Nick    18 年前

    它们包含通常分配给单个开发人员的项目的特定设置(例如,调试应用程序时要启动的启动项目和启动页面)。

    因此,最好不要将它们添加到版本控制中,让VS重新创建它们,以便每个开发人员都可以拥有他们想要的特定设置。

        16
  •  3
  •   Peter Mortensen Pieter Jan Bonestroo    8 年前

    .user是用户设置,我认为.suo是解决方案用户选项。您不希望这些文件处于源代码管理之下;它们将为每个用户重新创建。

        17
  •  1
  •   DbxD    7 年前

    其他人解释说,不,你不希望在版本控制中使用它。您应该将版本控制系统配置为忽略该文件(例如通过 .gitignore 文件)。

    要真正理解原因,查看此文件中的实际内容会有所帮助。我编写了一个命令行工具,可以让你看到 .suo 文件的内容。

    通过以下方式在您的机器上安装:

    dotnet tool install -g suo
    

    它有两个子命令, keys 和 view .

    suo keys <path-to-suo-file>
    

    这将转储文件中每个值的密钥。例如(删节):

    nuget
    ProjInfoEx
    BookmarkState
    DebuggerWatches
    HiddenSlnFolders
    ObjMgrContentsV8
    UnloadedProjects
    ClassViewContents
    OutliningStateDir
    ProjExplorerState
    TaskListShortcuts
    XmlPackageOptions
    BackgroundLoadData
    DebuggerExceptions
    DebuggerFindSource
    DebuggerFindSymbol
    ILSpy-234190A6EE66
    MRU Solution Files
    UnloadedProjectsEx
    ApplicationInsights
    DebuggerBreakpoints
    OutliningStateV1674
    ...
    

    如您所见,许多IDE功能都使用此文件来存储其状态。

    使用 看法 命令查看给定键的值。例如:

    $ suo view nuget --format=utf8 .suo
    nuget
    
    ?{"WindowSettings":{"project:MyProject":{"SourceRepository":"nuget.org","ShowPreviewWindow":false,"ShowDeprecatedFrameworkWindow":true,"RemoveDependencies":false,"ForceRemove":false,"IncludePrerelease":false,"SelectedFilter":"UpdatesAvailable","DependencyBehavior":"Lowest","FileConflictAction":"PromptUser","OptionsExpanded":false,"SortPropertyName":"ProjectName","SortDirection":"Ascending"}}}
    

    有关该工具的更多信息,请点击此处: https://github.com/drewnoakes/suo

        18
  •  0
  •   adheen    8 年前

    使用Rational ClearCase 答案是否定的。只有.sln& .*proj应该在源代码控制中注册。

    我不能为其他供应商负责。如果我没记错的话,这些文件是“用户”特定的选项,即您的环境。