105

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

我已阅读“ Visual Studio 2012 不转换 vs2010 解决方案? ”并按照“另存为...”解决方案文件的建议

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

我的问题:

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

4

6 回答 6

128

.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 中:

在此处输入图像描述

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

在此处输入图像描述

在此处输入图像描述

于 2013-10-22T09:01:22.340 回答
36

请注意,您还可以使用命令行强制升级 .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

于 2014-12-23T17:38:30.967 回答
22

似乎 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。使用资源管理器外壳强制 .sln 文件在 VS2013 中打开不会调用升级逻辑(显然)。

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

于 2014-07-07T16:26:38.800 回答
7

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

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

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

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

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

于 2015-10-29T17:30:20.033 回答
6

为了解决这个问题,我只是更改了 .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

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

更新:

更好的方法是使用另一个回复中指出的 devenv 命令行,这将为您安全地完成它。

于 2015-07-16T07:36:43.933 回答
4

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

  1. 在 VS 2015 中打开解决方案。
  2. 将新项目添加到解决方案。(我添加了一个测试项目。)
  3. 删除项目。
  4. 保存解决方案。

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

zumeyTCC 的答案都没有时,这对我有用。

编辑

Metro Smurf对类似问题有类似但比我更容易的答案。他的步骤是:

  1. VS 2015 中的开放解决方案
  2. 右键单击解决方案 > 添加 > 新解决方案文件夹(名称无关紧要)
  3. 保存解决方案
  4. 删除新添加的解决方案文件夹
  5. 保存解决方案
于 2016-07-15T14:46:21.813 回答