Visual Studio解决方案包含两种类型的隐藏用户文件。一个是解决方案。suo文件,这是一个二进制文件。另一个是project .user文件,它是一个文本文件。这些文件到底包含哪些数据?
我也一直在考虑是否应该将这些文件添加到源代码控制(在我的情况下是Subversion)。如果我没有添加这些文件,而另一个开发人员签出了解决方案,Visual Studio会自动创建新的用户文件吗?
Visual Studio解决方案包含两种类型的隐藏用户文件。一个是解决方案。suo文件,这是一个二进制文件。另一个是project .user文件,它是一个文本文件。这些文件到底包含哪些数据?
我也一直在考虑是否应该将这些文件添加到源代码控制(在我的情况下是Subversion)。如果我没有添加这些文件,而另一个开发人员签出了解决方案,Visual Studio会自动创建新的用户文件吗?
当前回答
我不会。.suo, .user, obj/bin目录中任何可能改变每个“用户”的内容通常都不适合源代码控制
其他回答
它们包含有关项目的特定设置,这些设置通常分配给单个开发人员(例如,在调试应用程序时启动的启动项目和开始页面)。
所以最好不要把它们添加到版本控制中,让VS重新创建它们,这样每个开发人员都可以有他们想要的特定设置。
正如在其他回答中所解释的,.suo和.user都不应该被添加到源代码控制中,因为它们是特定于用户/机器的(顺便说一下,最新版本VS的.suo被转移到专用的临时目录。VS,应该完全远离源代码控制)。
然而,如果你的应用程序需要一些环境设置来在VS中调试(这样的设置通常保存在.user文件中),准备一个示例文件(命名为.user. sample)并将其添加到源代码控制中以供参考可能会很方便。
在这样的文件中使用相对路径或依赖于环境变量而不是硬编码绝对路径是有意义的,因此示例可能足够通用,可以很容易地被其他人重用。
No.
我只是想要一个简短的答案,但没有。
其他人解释说,不,你不希望在版本控制中使用这个。你应该配置你的版本控制系统来忽略这个文件(例如通过一个.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
在MSDN网站上,它清楚地说明了这一点
解决方案用户选项(.suo)文件包含每个用户的解决方案 选项。该文件不应检入源代码控制。
所以我想说,在把东西签入源代码控制时,忽略这些文件是非常安全的。