如何强制在 Visual Studio 2013 中打开解决方案文件 (SLN)?

Posted

技术标签:

【中文标题】如何强制在 Visual Studio 2013 中打开解决方案文件 (SLN)?【英文标题】:How to force a Solution file (SLN) to be opened in Visual Studio 2013? 【发布时间】:2013-10-22 08:54:37 【问题描述】:

尝试在 VS 2013 中显式打开 VS 2012 解决方案(SLN 文件)成功。只需在 Windows 资源管理器中双击它仍然会在 VS 2012 中打开它。

我已阅读“Visual Studio 2012 doesn't convert vs2010 solution?”并关注了suggestion to "Save As..." the solution file。

它仍然默认在 VS 2012 中打开。

我的问题:

如何更改 SLN 文件以强制在 Visual Studio 2013 中打开它?

【问题讨论】:

【参考方案1】:

.sln 文件将 预期 版本表示为早期行之一 - 例如:

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013

或:

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012

但是 - 只有当.sln 文件的默认应用程序是“Microsoft Visual Studio 版本选择器”时,它才能使用它。默认的.sln 应用程序改为特定 版本的情况并不少见。在 Windows 8 中:

你可以分辨出哪个是默认的,因为它说“继续使用”:

【讨论】:

@UweKeim 嗯;那不是我的经验;使用版本选择器作为默认值,对我来说,devenv 的 正确 版本是按 sln 文件加载的 - 您是否有可能在任何时候将这些解决方案加载到 VS2013 中?这将升级他们 嗯,你的建议对我来说绰绰有余。与 VS 2012 中的那些深色图标相比,喜欢现在又是黄色的文件夹图标! @UweKeim 如果你查看 sln 文件,第二行告诉它使用哪个 IDE 打开:# Visual Studio 2013 vs # Visual Studio 2012 @UweKeim 我想它有一个“如果我不认识这个值,或者没有安装 IDE,请使用最新安装的 IDE”的后备选项 对我来说,默认启动器已设置为“Microsoft Visual Studio 版本选择器”,但它正在启动在 2012 ide 中使用 Visual Studio 2013 制作的解决方案!!。但是重新应用“Microsoft Visual Studio 版本选择器”作为默认值修复了它。现在 2012 在 2012 ide 中打开,2013 在 2013 ide 中打开。 (我使用的是 Windows 7 64 位)【参考方案2】:

请注意,您还可以使用命令行强制升级 .sln 或 .proj 文件,其中 devenv 是目标 IDE 版本:

devenv "MyProject.sln" /upgrade

例子:

"%programfiles(x86)%\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe" "D:\Source\MySolution.sln" /upgrade

请注意,这不会打开 Visual Studio。另一种方法是,在 IDE 中,为您的解决方案文件选择“另存为”,然后以新名称覆盖或保存解决方案。

阅读更多: http://msdn.microsoft.com/en-us/library/w15a82ay.aspx

【讨论】:

这是因为它是可编写脚本且非 hacky 的。 很遗憾,这种技术并不总是更新解决方案文件。 devenv "MyProject.sln" /upgrade之后,你还应该编辑.sln文件,检查@Zac的回答。【参考方案3】:

似乎 OP 已经有了一个可行的答案......但对我来说问题是不同的。我有一个 VS 2012 解决方案(实际上是几个)并想将它们转换为 2013(我知道这是对 .sln 文件的一个微不足道的更改,但我希望它自动完成,以防有一些我不知道的秘密升级逻辑) .

所以我想我会在 VS2013 中打开它,它会按预期自动升级,然后我会设置为双击该解决方案并在 VS2013 中查看它。但是在 VS2013 中打开并没有按预期自动为我升级解决方案,在 VS2013 中打开文件后我找不到强制升级的明确方法。我可以使用该解决方案,保存更改并关闭 VS2013,但 .sln 将保持不变且未升级。

原来我的问题在于我是如何打开解决方案的……我习惯性地右键单击文件并选择“打开方式”来选择我想用来打开文件的程序。我经常这样做。注意我不是在谈论更改默认的“打开方式”程序,而只是使用特定程序打开文件一次。所以我会右键单击 .sln 文件...用 Visual Studio 2013 打开...并且什么都不会升级。

最终我想进入 VS2013,然后执行 File > Open 并选择 .sln 文件(这对我来说是陌生的,因为我几乎不会以这种方式打开任何东西,也许你也是这样)。无论如何,确实会立即升级解决方案文件。

升级后,.sln 文件的第 2-3 行更改为:

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012

到这里:

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.30501.0
MinimumVisualStudioVersion = 10.0.40219.1

所以根据我的经验,要将 VS2012 .sln 自动更新到 VS2013,您必须打开 VS2013 并从“文件”>“打开”对话框中选择 .sln。使用 explorer shell 强制 .sln 文件在 VS2013 中打开不会调用升级逻辑(显然)。

作为进一步说明,我使用另一个解决方案进行了测试,在通过配置管理器进行更改(显然“触及”.sln 文件)后,它确实将 VS2012 升级到 VS2013,即使通过右键单击打开它也是如此与。

【讨论】:

这正是我想要做的。我有更新 3,一个项目自动更新,但另一个只有在我打开配置管理器时才会改变。感谢您的提示! 我什至从 VS 2013 中打开了一个 vs 2012 .sln 但对我来说它没有升级。很奇怪。 触发升级的不是 VS 2013 中解决方案的打开,而是修改解决方案的操作,例如更改活动配置中的设置。 我尝试将它从 vs2013 升级到 vs2015,它可以工作。【参考方案4】:

我的解决方案之前已成功从 2010 升级到 2013,但仍显示 .sln 与 2010 关联。

我测试了这个线程中给出的所有方法,唯一成功纠正 .sln 的方法是单独打开 Visual Studio 2013,然后在 IDE 中打开仍然与 2010 关联的解决方案,然后使用 [文件] > [Save (name).sln as] 覆盖现有的.sln 文件。

将 .sln 的文件 assoc 设置为“Visual Studio 版本选择器”没有任何变化,2010 年解决方案继续打开。

devenv (name).sln /upgrade 方法没有改变我的 .sln 文件。

破解 .sln 文件的原始文本损坏了我的文件,它根本无法打开。

【讨论】:

干杯杰夫,我遇到了和你一样的情况。我必须说,虽然微软决定 VS 2013 不像以前的 VS 版本那样尝试升级它所涉及的所有内容,但这很好!通常情况正好相反,我试图阻止我的不同 VS IDE 相互升级 .proj 和 .sln 文件:) @SimonBrangwin 这是一项改进,但如果您根据其他答案明确调用 /upgrade ,您会期望它实际上会执行请求的升级! 杰夫谢谢!这是我能找到将我的 VS 2013 sln 升级为默认使用 2015 打开的唯一方法。我还必须打开解决方案资源管理器并手动选择资源管理器树顶部的解决方案节点以查看“保存(名称).sln as' 文件菜单中的选项。【参考方案5】:

为了解决这个问题,我只是更改了 .sln 文件的以下几行:

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010

进入这些:

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013

注释行将在解决方案加载器解析时更改。

更新:

更好的方法是使用 another reply 中指出的 devenv 命令行,它会为您安全地执行此操作。

【讨论】:

【参考方案6】:

这可能适用于尝试将解决方案文件升级到 Visual Studio 2015 的读者。(我升级了 VS 2012 解决方案。)

    在 VS 2015 中打开解决方案。 向解决方案添加一个新项目。 (我添加了一个测试项目。) 删除项目。 保存解决方案。

此时您可能希望删除已删除的项目文件夹,因为第 3 步并未删除它。

当zumey’s 和TCC’s 的答案都没有时,这对我有用。

编辑

Metro Smurf 有一个类似但比我的similar question 更容易的答案。他的步骤是:

    在 VS 2015 中打开解决方案 右键单击解决方案 > 添加 > 新建解决方案文件夹(名称无关紧要) 保存解决方案 删除新添加的解决方案文件夹 保存解决方案

【讨论】:

我只是重命名了一个项目,然后又将其还原。这样就不会创建文件夹 此解决方案也适用于 VS 2017 和 2019。

以上是关于如何强制在 Visual Studio 2013 中打开解决方案文件 (SLN)?的主要内容,如果未能解决你的问题,请参考以下文章

如何强制 Visual Studio 在 https 中运行网站

我可以强制 Visual Studio 使用 mingw 编译器吗

你如何强制 Visual Studio 为 aspx/ascx 文件重新生成 .designer 文件?

Visual Studio 安装项目:如何强制卸载程序以管理员模式运行?

Visual Studio 2012 中的 Phonegap:如何使用 console.log?

如何使用Visual Studio 2013或Visual Studio 2017设置TFS 2013