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

Uwe*_*eim 102 .net solution visual-studio-2012 visual-studio-2013

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

我读过" Visual Studio 2012没有转换vs2010解决方案? "并按照"另存为..."的解决方案文件的建议.

它仍默认在VS 2012中打开.

我的问题:

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

Mar*_*ell 123

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

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
Run Code Online (Sandbox Code Playgroud)

要么:

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012
Run Code Online (Sandbox Code Playgroud)

但是 - 如果.sln文件的默认应用程序是"Microsoft Visual Studio版本选择器",它只能使用它.默认.sln应用程序不是特定版本的情况并不少见.在Windows 8中:

在此输入图像描述

你可以告诉哪个是默认值,因为它说"继续使用":

在此输入图像描述

在此输入图像描述

  • 对我来说,默认的启动器已经设置为"Microsoft Visual Studio版本选择器",但它正在推出2012年ide ide 2013中的visual studio 2013中的解决方案.但重新应用"Microsoft Visual Studio版本选择器"作为默认修复它.现在2012年开放2012年ide和2013年开放2013年ide.(我使用的是Windows 7 64位) (6认同)
  • @UweKeim嗯 那不是我的经历; 使用版本选择器作为默认值,对于我来说,每个sln文件加载了正确**版本的devenv - 您是否有可能在任何时候将这些解决方案加载到VS2013中?这将升级他们 (2认同)
  • 那么,你的建议对我来说已经足够了.喜欢现在的黄色文件夹图标,与VS 2012中的黑色文件夹相比! (2认同)
  • @UweKeim如果你查看sln文件,第二行告诉它打开哪个IDE:`#Visual Studio 2013` vs`#Visual Studio 2012` (2认同)

小智 34

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

devenv "MyProject.sln" /upgrade
Run Code Online (Sandbox Code Playgroud)

例:

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

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

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

  • 遗憾的是,这种技术并不总是更新解决方案文件。 (2认同)

TCC*_*TCC 22

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

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

事实证明我的问题在于我如何打开解决方案...作为一种习惯我右键单击文件并选择"打开方式"以选择我想用来打开文件的程序.我经常这样做.注意我不是在谈论更改默认的"打开方式"程序,而只是打开一个具有特定程序的文件.所以我会右键单击.sln文件...用Visual Studio 2013打开...没有任何东西会升级.

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

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

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012
Run Code Online (Sandbox Code Playgroud)

对此:

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.30501.0
MinimumVisualStudioVersion = 10.0.40219.1
Run Code Online (Sandbox Code Playgroud)

因此,根据我的经验,要自动将VS2012 .sln更新为VS2013,您必须打开VS2013并从文件>打开对话框中选择.sln.使用资源管理器shell强制.sln文件在VS2013中打开不会调用升级逻辑(显然).

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

  • 这并不是VS 2013中触发升级的解决方案的开放,而是修改解决方案的操作,例如更改活动配置中的设置. (4认同)
  • 我甚至在VS 2013中打开了一个vs 2012 .sln,但对我来说它并没有升级.奇怪的. (2认同)

小智 7

我有一个以前从2010年到2013年成功升级的解决方案,但仍然显示与2010年相关的.sln.

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

将.sln的文件关联设置为"Visual Studio版本选择器"没有任何更改,解决方案在2010年继续打开.

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

黑客攻击.sln文件的原始文本已损坏我的,它根本无法打开.


Zac*_*Zac 6

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

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Run Code Online (Sandbox Code Playgroud)

进入这些:

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
Run Code Online (Sandbox Code Playgroud)

注释行将在解析器加载器解析时进行更改.