Visual Studio解决方案包含两种类型的隐藏用户文件。一个是解决方案.suo
文件,它是一个二进制文件。另一个是项目.user
文件,它是文本文件。这些文件究竟包含哪些数据?
我也一直在想是否应该将这些文件添加到源代码管理(在我的情况下为Subversion)。如果我不添加这些文件,而另一位开发人员签出了解决方案,Visual Studio会自动创建新的用户文件吗?
Visual Studio解决方案包含两种类型的隐藏用户文件。一个是解决方案.suo
文件,它是一个二进制文件。另一个是项目.user
文件,它是文本文件。这些文件究竟包含哪些数据?
我也一直在想是否应该将这些文件添加到源代码管理(在我的情况下为Subversion)。如果我不添加这些文件,而另一位开发人员签出了解决方案,Visual Studio会自动创建新的用户文件吗?
Answers:
这些文件包含通常针对您的计算机的用户首选项配置,因此最好不要将其放在SCM中。另外,VS几乎每次执行时都会对其进行更改,因此SCM始终会将其标记为“已更改”。我也不参与其中,我在使用VS的项目中工作了2年,这样做没有任何问题。唯一的烦恼是调试参数(执行路径,部署目标等)存储在其中一个文件中(不知道是哪个文件),因此,如果您有针对它们的标准,则将无法通过SCM将其“发布”给其他开发人员,以使其“随时可以使用”整个开发环境。
您不需要添加这些内容-它们包含每个用户的设置,其他开发人员也不需要您的副本。
其他人已经解释了为什么将*.suo
and *.user
文件置于源代码控制下不是一个好主意。
我建议您将这些模式添加到svn:ignore
属性中有两个原因:
svn:ignore
属性在哪里设置以及如何设置?
.user
,那么一个人可能会选择不只是忽略.suo
-或者一个人可能会忽略.user
,从而需要有意识地决定添加它们?不要这样认为,重点svn:ignore
是标记不需要有意识的决定的事物。
我们不提交二进制文件(* .suo),但是我们提交.user文件。.user文件包含例如调试项目的启动选项。您可以在“调试”选项卡的项目属性中找到启动选项。我们在某些项目中使用了NUnit,并将nunit-gui.exe配置为项目的开始选项。如果没有.user文件,则每个团队成员都必须分别对其进行配置。
希望这可以帮助。
自从我在2011年通过Google找到此问题/答案以来,我想我应该花点时间,然后将Visual Studio 2010创建的* .SDF文件的链接添加到可能不应该添加到版本控制中的文件列表中( IDE将重新创建它们)。由于我不确定* .sdf文件在其他地方是否可以合法使用,因此我只忽略了SVN中的特定[projectname] .sdf文件。
这似乎是微软对此的看法:
我不知道为什么您的项目将DebuggingWorkingDirectory存储在suo文件中。如果这是用户特定的设置,则应考虑将其存储在* .proj.user文件名中。如果该设置可在所有从事该项目的用户之间共享,则应考虑将其存储在项目文件本身中。
甚至不要考虑将suo文件添加到源代码管理中!SUO(解决方案用户选项)文件旨在包含用户特定的设置,并且不应在使用同一解决方案的用户之间共享。如果您要在scc数据库中添加suo文件,我不知道您会在IDE中遇到什么其他问题,但是从源代码控制的角度来看,您将破坏Web项目scc集成,使用了Lan vs Internet插件由不同的用户访问VSS,甚至可能导致scc完全中断(存储在suo文件中的VSS数据库路径可能对您有效)可能对其他用户无效。
阿林·康斯坦丁(MSFT)
没有。
我只想要一个真正的简短答案,没有任何答案。
不,因为它们是特定于开发人员/计算机的本地设置,所以它们不应致力于源代码控制。
GitHub维护了一份供Visual Studio用户忽略的建议文件类型列表,网址为https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
对于svn,我设置了以下global-ignore
属性:
* .DotSettings.User
* .onetoc2
* .suo
.vs
PrecompiledWeb
thumbs.db
obj
bin
debug
* .user
* .vshost。*
* .tss
* .dbml.layout
如果在ProjectProperties> Debugging> Environment中设置可执行文件的dir依赖关系,则路径存储在'.user'文件中。
假设我在上述字段中设置了此字符串:“ PATH = C:\ xyz \ bin” 这是将其存储在'.user'文件中的方式:
<LocalDebuggerEnvironment>PATH=C:\xyz\bin$(LocalDebuggerEnvironment)</LocalDebuggerEnvironment>
这在OpenCV中为我们提供了很多帮助。我们可以为不同的项目使用不同版本的OpenCV。另一个优点是,在新机器上设置我们的项目非常容易。我们只需要复制相应的依赖目录。因此,对于某些项目,我更喜欢将'.user'添加到源代码管理中。
即使,它完全取决于项目。您可以根据需要拨打电话。