首页 文章

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

提问于
浏览
778

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

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

18 回答

  • 25

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

  • 631

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

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

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

  • 0

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

  • 8

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

    Why does the Visual Studio conversion wizard 2010 create a massive SDF database file?

  • 0

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

  • 4

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

    Adding (and editing) .suo files to source control

    我不知道为什么你的项目将DebuggingWorkingDirectory存储在suo文件中 . 如果这是特定于用户的设置,则应考虑将其存储在* .proj.user文件名中 . 如果该设置在项目的所有用户之间可共享,则应考虑将其存储在项目文件中 . 甚至不想将suo文件添加到源代码管理中! SUO(soluton用户选项)文件旨在包含特定于用户的设置,不应在使用同一解决方案的用户之间共享 . 如果你要在scc数据库中添加suo文件,我不知道IDE中你还有什么其他的东西,但从源代码管理的角度来看,你将破坏web项目的scc集成,使用Lan vs Internet插件由不同的用户进行VSS访问,甚至可能导致scc完全中断(存储在suo文件中的VSS数据库路径可能对其他用户有效) . 艾琳·康斯坦丁(MSFT)

  • 10

    MSDN website,它明确指出

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

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

  • 65

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

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

  • 6

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

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

    • 所以其他开发者赢得了't wind up with one developer'的设置 .

    • 因此,当您查看状态或提交文件时,这些文件不会混淆代码库并模糊您需要添加的新文件 .

  • 47

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

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

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

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

  • 16

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

  • 6

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

  • 3

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

  • 7

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

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

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

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

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

  • 11

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

    希望这可以帮助 .

  • 130

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

  • 22

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

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

  • 17

    Don't add any of those files into version control. 这些文件是自动生成的,具有工作站特定信息,如果签入版本控制将导致其他工作站出现问题 .

相关问题