it-swarm.cn

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

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

我也一直想知道是否应该将这些文件添加到源代码控制中(在我的情况下是Subversion)。如果我不添加这些文件而另一个开发人员检出解决方案,Visual Studio会自动创建新的用户文件吗?

804
Ben Mills

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

645
Fabio Ceconello

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

133
Steve Cooper

其他人已经解释了为什么在源代码控制下使用*.suo*.user文件并不是一个好主意。

我想建议你将这些模式添加到svn:ignore属性有两个原因:

  1. 因此,其他开发人员不会使用一个开发人员的设置。
  2. 因此,当您查看状态或提交文件时,这些文件不会混淆代码库并模糊您需要添加的新文件。
66
JXG

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

希望这可以帮助。

48
Thomas

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

为什么Visual Studio转换向导2010会创建一个大规模的SDF数据库文件?

25
Stephen

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

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

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

22
JRoppert

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

18
cori

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

添加(和编辑).suo文件到源代码管理

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

甚至不想将suo文件添加到源代码管理中! SUO(soluton用户选项)文件旨在包含特定于用户的设置,不应在使用同一解决方案的用户之间共享。如果你要在scc数据库中添加suo文件,我不知道IDE中你还有什么其他东西,但从源代码管理的角度来看,你将破坏web项目的scc集成,不同用户用于VSS访问的Lan vs Internet插件,甚至可以使scc完全中断(存储在suo文件中的VSS数据库路径可能对其他用户有效)。

艾琳·康斯坦丁(MSFT)

17
Scott W

Visual Studio将自动创建它们。我不建议将它们放在源代码管理中。很多时候,本地开发人员的SOU文件导致VS在开发人员框中表现不正常。删除文件然后让VS重新创建它总是修复问题。

11
Bloodhound

MSDN网站上 ,它清楚地说明了这一点

解决方案用户选项(.suo)文件包含每用户解决方案选项。 不应该将此文件签入源代码控制

所以我会说在检查源代码控制的东西时忽略这些文件是相当安全的。

10
Farax

我不会。任何可能因“用户”而改变的东西在源代码控制中通常都不好。 .suo,.user,obj/bin目录

8
ScaleOvenStove

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

7
benefactual

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

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

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

在我们公司,我们不会将这些文件置于源代码管理之下。

6
ugasoft

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

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

6
massimogentilini

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

4
Nick

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

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

3
titanae

不要将任何这些文件添加到版本控制中。 这些文件是自动生成的,具有工作站特定信息,如果签入版本控制,将导致其他工作站出现问题。

1
Amila

不,他们不应该致力于源代码管理,因为他们是开发人员/机器特定的本地设置。

GitHub维护一个建议的文件类型列表供Visual Studio用户忽略 https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

对于svn,我有以下global-ignore属性集:

* .DotSettings.User
*。onetoc2
*。锁
。VS
PrecompiledWeb
了thumbs.db
物镜

调试
*。用户
*。vshost。*
*。TSS
*。dbml.layout

0
Stephen Kennedy

正如其他答案所解释的那样,.suo.user都不应该添加到源代码控制中,因为它们是用户/机器特定的(最新版本的VS的BTW .suo被移动到专用的临时目录.vs中,应该保持在源代码之外完全控制)。

但是 如果你的应用程序需要在VS中调试环境的一些设置(这些设置通常保存在.user文件中),准备一个样本文件(命名为.user.SAMPLE)并将其添加到源代码控制中可能很方便。引用。

在这种文件中使用硬编码的绝对路径而不是使用相对的或依赖于环境变量是有意义的,因此样本可以是通用的,以便其他人可以容易地重复使用。

0
AntonK

如果在 ProjectProperties> Debugging> Environment 中设置可执行目录依赖项,则路径存储在“.user”文件中。

假设我在上面提到的字段中设置了这个字符串: “PATH = C:\ xyz\bin” 这是它将如何存储在'.user'文件中:

<LocalDebuggerEnvironment>PATH=C:\xyz\bin$(LocalDebuggerEnvironment)</LocalDebuggerEnvironment>

这对我们在OpenCV工作时帮助很大。我们可以为不同的项目使用不同版本的OpenCV。另一个优点是,在新机器上设置项目非常容易。我们只需要复制相应的依赖dirs。所以对于某些项目,我更喜欢将'.user'添加到源代码控制中。

尽管如此,它完全依赖于项目。您可以根据自己的需要拨打电话。

0
adheen