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

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


当前回答

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

要真正理解其中的原因,看看这个文件中到底有什么会有所帮助。我编写了一个命令行工具,可以让您查看.suo文件的内容。

在你的机器上安装它通过:

dotnet tool install -g suo

它有两个子命令,键和视图。

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特性都使用这个文件来存储它们的状态。

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

$ 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

其他回答

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

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

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

SUO(解决方案用户选项):记录 所有可能的选择 把你的解决方案联系起来 每次你打开它,里面都有 自定义 取得了。

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

这些文件是特定于用户的选项,应该独立于解决方案本身。Visual Studio会根据需要创建新的,所以它们不需要检入到源代码控制中。实际上,最好不要这样做,因为这样可以让开发人员根据自己的需要定制自己的环境。

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

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

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