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


102

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

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

仍然默认情况下在VS 2012中打开。

我的问题:

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

Answers:


123

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

在此处输入图片说明

您可以知道哪个是默认设置,因为它显示“ keep using”:

在此处输入图片说明

在此处输入图片说明


2
@UweKeim hmmm; 那不是我的经验;默认使用版本选择器,对我来说,每个sln文件都已加载正确版本的devenv-是否有可能随时将这些解决方案加载到VS2013中?将会升级它们
Marc Gravell

2
好吧,您的建议对我来说绰绰有余。与VS 2012中的深色文件夹相比,现在又喜欢黄色的文件夹图标!
Uwe Keim

2
@UweKeim(如果您查看sln文件),第二行告诉它打开哪个IDE:# Visual Studio 2013vs# Visual Studio 2012
Marc Gravell

1
@UweKeim我想它的后备功能是“如果我不认识该值,或者未安装IDE,请使用最新安装的IDE”
Marc Gravell

6
对我来说,默认启动器已经设置为“ Microsoft Visual Studio版本选择器”,但是它正在启动在Visual Studio 2013中由2012 ide开发的解决方案!!但是重新应用了“ Microsoft Visual Studio版本选择器”作为默认值对其进行了修复。现在,2012年在ide中打开,2013年在2013 ide中打开。(我正在使用Windows 7 64bit)
Peter Flannery 2013年

35

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


1
这是因为它是可编写脚本的且非hacky。
CAD猛击

2
遗憾的是,这种技术并不总是更新解决方案文件。
Theophilus

之后devenv "MyProject.sln" /upgrade,您还应该编辑.sln文件,检查@Zac的ans。
魏国

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中打开不会(显然)调用升级逻辑。

进一步说明,我使用另一种解决方案进行了测试,并且在通过Configuration Manager进行了更改(显然可以“触碰” .sln文件)之后,即使通过右键单击“打开”将其打开,它也确实将VS2012升级到了VS2013。


1
这正是我正在尝试做的。我有Update 3,并且一个项目已自动更新,但另一个项目仅在我打开配置管理器时才会更改。感谢您的提示!
艾丽卡(Erica)2014年

2
我什至从VS 2013内打开了vs 2012 .sln,但对我来说却没有升级。奇怪的。
PositiveGuy

4
并不是触发VS 2013中解决方案的开始,而是触发修改解决方案的操作,例如更改活动配置中的设置。
2014年

我尝试将其从vs2013升级到vs2015,并且可以正常工作。
Dingxin Xu

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文件的原始文本会破坏我的文件,根本无法打开。


干杯杰夫,我刚遇到了和你一样的情况。我必须说,尽管Microsoft决定VS 2013不尝试升级它涉及的所有内容,这很不错,但与VS的早期版本不同!通常情况是相反的,我试图防止我不同的VS IDE互相升级.proj和.sln文件:)
Simon Brangwin 2015年

@SimonBrangwin是一个改进,不同之处在于,如果您按照其他答案显式地使用/ upgrade进行调用,则可以预期它实际上会执行请求的升级!
stannius '16

杰夫,谢谢!这是我可以找到的将VS 2013 sln升级到默认情况下与2015默认打开的唯一方法。我还必须打开解决方案资源管理器,并手动选择资源管理器树顶部的解决方案节点,以查看“保存(名称).sln作为“文件”菜单中的选项。
ToastyMallows

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

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


4

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

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

由于步骤3并未将其删除,因此您可能需要此时删除已删除的项目文件夹。

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

编辑

关于类似的问题大都会蓝精灵的回答与我类似,但比我容易。他的步骤是:

  1. VS 2015中的开放式解决方案
  2. 右键单击解决方案>添加>新建解决方案文件夹(名称无关紧要)
  3. 保存解决方案
  4. 删除新添加的解决方案文件夹
  5. 保存解决方案

我只是简单地重命名了一个项目,然后将其还原。这样就不会创建任何文件夹
Andy
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.