How to force a Solution file (SLN) to be opened in Visual Studio 2013?

I had a solution that had previously been upgraded from 2010 to 2013 successfully but still showed the .sln as associated with 2010.

I tested all the methods given in this thread and the only one that successfully corrected the .sln was to open Visual Studio 2013 alone, then open the solution that still was associated with 2010 in the IDE, then use the [File] > [Save (name).sln as] to overwrite the existing .sln file.

Setting the file assoc of the .sln to be the "Visual Studio version selector" made no change and the solution continued to open in 2010.

The devenv (name).sln /upgrade method made no change to my .sln file.

Hacking the raw text of the .sln file corrupted mine and it would not open at all.


Note that you can also force the upgrade of a .sln or .proj file by using the commandline, where devenv is the target IDE version:

devenv "MyProject.sln" /upgrade

Example:

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

Note that this does not open Visual Studio. An alternative is to, from within the IDE, select "Save As" for your solution file and overwrite or save the solution under new name.

Read more: http://msdn.microsoft.com/en-us/library/w15a82ay.aspx


The .sln file indicates the intended version as one of the early lines - for example:

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

or:

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

However - it can only make use of this if the default application for .sln files is the "Microsoft Visual Studio Version Selector". It is not uncommon for the default .sln application to be a specific version instead. In windows 8:

enter image description here

you can tell which is the default because it says "keep using":

enter image description here

enter image description here


Seems like the OP has a working answer already ... but for me the problem was different. I had a VS 2012 solution (several actually) and wanted to convert them to 2013 (which I understand is a trivial change to the .sln file, but I wanted it done automatically in case there was some secret upgrade logic I was unaware of).

So I thought I would open it in VS2013, it would automatically upgrade as expected, and then I'd be set to double click the solution and see it in VS2013 going forward. But opening in VS2013 was NOT upgrading the solution for me automatically as expected and I could not find an explicit way to force the upgrade after opening the file in VS2013. I could work with the solution, save my changes, and close VS2013, but the .sln would remain unchanged and un-upgraded.

Turns out my problem was in how I was opening the solution ... as a habit I right click files and select "open with" to choose the program I want to use to open a file. I do this frequently. Note I am NOT talking about changing the default "open with" program but just opening a file with a specific program once. So I would right click the .sln file... open with Visual Studio 2013 ... and nothing would upgrade.

Eventually I thought to go into VS2013, then do File > Open and select the .sln file (this is foreign to me since I hardly if ever open anything this way, maybe you are the same way). Anyway that did upgrade the solution file instantly.

After upgrading, lines 2-3 of the .sln file changed from this:

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

to this:

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

So from my experience, to automatically update a VS2012 .sln to VS2013, you must open VS2013 and select the .sln from the File > Open dialog. Using the explorer shell to force the .sln file to open in VS2013 does not invoke the upgrade logic (apparently).

As a further note, I tested with another solution, and after making changes through Configuration Manager (which obviously "touches" the .sln file) it did upgrade a VS2012 to VS2013, even after having opened it through right-click open with.