Visual Studio的解决方案包含两种类型的隐藏用户文件。其中一种是解决方案.suo
文件,它是一个二进制文件。另一种是项目.user
文件,它是一个文本文件。这些文件具体包含哪些数据?
我一直在想是否应该将这些文件添加到源代码控制中(在我的情况下是Subversion)。如果我不将这些文件添加进去,而另一个开发者检出了解决方案,那么 Visual Studio 是否会自动创建新的用户文件呢?
Visual Studio的解决方案包含两种类型的隐藏用户文件。其中一种是解决方案.suo
文件,它是一个二进制文件。另一种是项目.user
文件,它是一个文本文件。这些文件具体包含哪些数据?
我一直在想是否应该将这些文件添加到源代码控制中(在我的情况下是Subversion)。如果我不将这些文件添加进去,而另一个开发者检出了解决方案,那么 Visual Studio 是否会自动创建新的用户文件呢?
这些文件包含与用户偏好设置相关的配置,通常是特定于您的计算机的,因此最好不要将其放入SCM。另外,每次执行VS时都会更改它,所以它始终会被SCM标记为“已更改”。
我也不包括这些文件,在使用VS进行项目开发两年后,没有任何问题。唯一的小烦恼是调试参数(执行路径、部署目标等)存储在其中一个文件中(不知道是哪一个),因此如果您对它们有一个标准,您无法通过SCM“发布”它,使其他开发人员拥有整个开发环境“准备就绪”。
您不需要添加这些文件--它们包含每个用户的设置,其他开发人员也不需要您的副本。
其他人已经解释了为什么将*.suo
和*.user
文件放在源代码控制下不是一个好主意。
我建议您将这些模式添加到svn:ignore
属性中,原因有两个:
svn:ignore
属性在哪里以及如何设置? - Peter Mortensen.user
,这样就可以选择不仅忽略.suo
- 或者可以忽略.user
,这样就需要有意识地决定加入它们?我不这么认为,svn:ignore
的目的是标记那些不需要有意识决定的东西。 - PJTraillSUO(Solution User Options):记录与解决方案相关的所有选项,以便每次打开解决方案时都包括您进行的自定义。
.user文件包含项目的用户选项(而SUO用于解决方案),并扩展了项目文件名(例如,anything.csproj.user包含anything.csproj项目的用户设置)。
这似乎是微软在此问题上的看法:
我不知道为什么你的项目将DebuggingWorkingDirectory存储在suo文件中。如果这是用户特定的设置,您应该考虑将其存储在*.proj.user文件名中。如果该设置可在所有工作于该项目的用户之间共享,则应考虑将其存储在项目文件本身中。
根本不要考虑将suo文件添加到源代码控制中! SUO(解决方案用户选项)文件旨在包含特定于用户的设置,并且不应在同一解决方案上工作的用户之间共享。如果您将suo文件添加到scc数据库中,我不知道IDE中会破坏哪些其他东西,但从源代码控制的角度来看,您将破坏Web项目的SCC集成,不同用户用于VSS访问的局域网与互联网插件,甚至可能导致SCC完全崩溃(suo文件存储的VSS数据库路径对您而言可能是有效的,但对于另一个用户可能无效)。
Alin Constantin(MSFT)
默认情况下,微软的Visual SourceSafe不会将这些文件包含在源代码控制中,因为它们是特定于用户的设置文件。如果您正在使用SVN作为源代码控制,请遵循这个模式。
不。
我只想要一个简短的答案,但是没有得到。
Visual Studio会自动创建它们。我不建议将它们放在源代码控制中。有许多情况是本地开发人员的SOU文件导致VS在该开发人员的电脑上表现异常。删除文件,然后让VS重新创建它总是可以解决问题。