Wie erzwinge ich das Öffnen einer Lösungsdatei (SLN) in Visual Studio 2013?

102

Der Versuch, eine VS 2012-Lösung (SLN-Datei) explizit in VS 2013 zu öffnen, ist erfolgreich. Durch einfaches Doppelklicken im Windows Explorer wird es stattdessen in VS 2012 geöffnet.

Ich habe " Visual Studio 2012 konvertiert keine vs2010-Lösung? " Gelesen und bin dem Vorschlag gefolgt, die Lösungsdatei unter "Speichern unter ..." zu speichern .

Trotzdem wird es standardmäßig in VS 2012 geöffnet.

Meine Frage:

Wie ändere ich eine SLN-Datei, um das Öffnen in Visual Studio 2013 zu erzwingen?

Uwe Keim
quelle

Antworten:

123

Die .slnDatei gibt die beabsichtigte Version als eine der ersten Zeilen an - zum Beispiel:

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

oder:

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

Dies kann jedoch nur verwendet werden, wenn die Standardanwendung für .slnDateien "Microsoft Visual Studio Version Selector" ist. Es ist nicht ungewöhnlich, dass die Standardanwendung stattdessen .slneine bestimmte Version ist. In Windows 8:

Geben Sie hier die Bildbeschreibung ein

Sie können erkennen, welches die Standardeinstellung ist, da dort "weiter verwenden" steht:

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Marc Gravell
quelle
2
@UweKeim hmmm; das ist nicht meine Erfahrung; Mit der Versionsauswahl als Standard wird für mich die richtige Version von devenv pro sln-Datei geladen. Ist es möglich, dass Sie diese Lösungen zu irgendeinem Zeitpunkt in VS2013 geladen haben? das wird sie aktualisieren
Marc Gravell
2
Nun, Ihr Vorschlag ist mir mehr als ausreichend. Ich liebe die jetzt wieder gelben Ordnersymbole im Vergleich zu den dunklen in VS 2012!
Uwe Keim
2
@UweKeim Wenn Sie in die SLN-Datei schauen, sagt die zweite Zeile, mit welcher IDE geöffnet werden soll: # Visual Studio 2013vs# Visual Studio 2012
Marc Gravell
1
@UweKeim Ich stelle mir vor, es hat einen Fallback von "Wenn ich den Wert nicht erkenne oder die IDE nicht installiert ist, verwenden Sie die zuletzt installierte IDE"
Marc Gravell
6
Für mich war der Standard-Launcher bereits auf "Microsoft Visual Studio Version Selector" eingestellt, aber er startete Lösungen, die in Visual Studio 2013 in der 2012-Idee erstellt wurden !!. Durch erneutes Anwenden des "Microsoft Visual Studio-Versionswählers" als Standard wurde dies jedoch behoben. Jetzt 2012 eröffnet in ide 2012 und 2013 eröffnet in 2013 ide. (Ich benutze Windows 7 64bit)
Peter Flannery
35

Beachten Sie, dass Sie das Upgrade einer SLN- oder PROJ-Datei auch über die Befehlszeile erzwingen können, wobei devenv die Ziel-IDE-Version ist:

devenv "MyProject.sln" /upgrade

Beispiel:

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

Beachten Sie, dass Visual Studio dadurch nicht geöffnet wird. Eine Alternative besteht darin, in der IDE "Speichern unter" für Ihre Lösungsdatei auszuwählen und die Lösung unter einem neuen Namen zu überschreiben oder zu speichern.

Lesen Sie mehr: http://msdn.microsoft.com/en-us/library/w15a82ay.aspx

zumey
quelle
1
Dies, weil es skriptfähig und nicht hackig ist.
CAD Kerl
2
Leider aktualisiert diese Technik die Lösungsdatei nicht immer.
Theophilus
Nach dem devenv "MyProject.sln" /upgradesollten Sie auch die .sln-Datei bearbeiten, überprüfen Sie @ Zacs ans.
Wei Guo
22

Scheint, als hätte das OP bereits eine funktionierende Antwort ... aber für mich war das Problem anders. Ich hatte eine VS 2012-Lösung (tatsächlich mehrere) und wollte sie auf 2013 konvertieren (was meines Wissens eine triviale Änderung der SLN-Datei ist, aber ich wollte, dass sie automatisch durchgeführt wird, falls es eine geheime Upgrade-Logik gibt, die mir nicht bekannt ist). .

Also dachte ich, ich würde es in VS2013 öffnen, es würde automatisch wie erwartet aktualisiert, und dann würde ich so eingestellt, dass ich auf die Lösung doppelklicke und sie in VS2013 in Zukunft sehe. Beim Öffnen in VS2013 wurde die Lösung für mich jedoch NICHT wie erwartet automatisch aktualisiert, und ich konnte keine explizite Möglichkeit finden, das Upgrade nach dem Öffnen der Datei in VS2013 zu erzwingen. Ich könnte mit der Lösung arbeiten, meine Änderungen speichern und VS2013 schließen, aber die SLN-Datei bleibt unverändert und wird nicht aktualisiert.

Es stellte sich heraus, dass mein Problem darin bestand, wie ich die Lösung öffnete ... aus Gewohnheit klicke ich mit der rechten Maustaste auf Dateien und wähle "Öffnen mit", um das Programm auszuwählen, mit dem ich eine Datei öffnen möchte. Ich mache das oft. Hinweis Ich spreche NICHT davon, das Standardprogramm "Öffnen mit" zu ändern, sondern nur einmal eine Datei mit einem bestimmten Programm zu öffnen. Also würde ich mit der rechten Maustaste auf die SLN-Datei klicken ... mit Visual Studio 2013 öffnen ... und nichts würde aktualisieren.

Schließlich dachte ich, ich würde in VS2013 gehen, dann Datei> Öffnen ausführen und die SLN-Datei auswählen (dies ist mir fremd, da ich kaum oder nie etwas auf diese Weise öffne, vielleicht sind Sie genauso). Auf jeden Fall wurde die Lösungsdatei sofort aktualisiert.

Nach dem Upgrade wurden die Zeilen 2-3 der SLN-Datei wie folgt geändert:

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

dazu:

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

Um eine VS2012 .sln automatisch auf VS2013 zu aktualisieren, müssen Sie meiner Erfahrung nach VS2013 öffnen und die .sln im Dialogfeld Datei> Öffnen auswählen. Wenn Sie die Explorer-Shell verwenden, um das Öffnen der SLN-Datei in VS2013 zu erzwingen, wird die Upgrade-Logik (anscheinend) nicht aufgerufen.

Als weiteren Hinweis habe ich mit einer anderen Lösung getestet und nach Änderungen über Configuration Manager (der offensichtlich die SLN-Datei "berührt") ein VS2012 auf VS2013 aktualisiert, selbst nachdem es durch Klicken mit der rechten Maustaste geöffnet wurde.

TCC
quelle
1
Genau das habe ich versucht. Ich habe Update 3 und ein Projekt wird automatisch aktualisiert, das andere ändert sich jedoch nur, wenn ich den Konfigurationsmanager öffne. Danke für die Tipps!
Erica
2
Ich habe sogar eine vs 2012 .sln aus VS 2013 heraus geöffnet, aber für mich wurde sie NICHT aktualisiert. Seltsam.
PositiveGuy
4
Es ist nicht das Öffnen der Lösung in VS 2013, das das Upgrade auslöst, sondern eine Aktion, die die Lösung ändert, z. B. das Ändern einer Einstellung in der aktiven Konfiguration.
Bleater
Ich habe versucht, ein Upgrade von vs2013 auf vs2015 durchzuführen, und es funktioniert.
Dingxin Xu
7

Ich hatte eine Lösung, die zuvor erfolgreich von 2010 auf 2013 aktualisiert wurde, aber immer noch die .sln als mit 2010 verbunden zeigte.

Ich habe alle in diesem Thread angegebenen Methoden getestet. Die einzige Methode, mit der die SLN-Datei erfolgreich korrigiert wurde, bestand darin, Visual Studio 2013 allein zu öffnen, dann die noch mit 2010 verknüpfte Lösung in der IDE zu öffnen und dann [Datei]> [Speichern] zu verwenden (name) .sln as], um die vorhandene .sln-Datei zu überschreiben.

Das Festlegen der Dateizuordnung der .sln als "Visual Studio-Versionsauswahl" wurde nicht geändert, und die Lösung wurde 2010 weiter geöffnet.

Die Methode devenv (name) .sln / upgrade hat keine Änderung an meiner .sln-Datei vorgenommen.

Das Hacken des Rohtextes der SLN-Datei hat meine beschädigt und sie wurde überhaupt nicht geöffnet.

Jeff
quelle
Prost Jeff, ich bin gerade in die gleiche Situation geraten wie du. Ich muss sagen, obwohl es schön ist, dass Microsoft entschieden hat, dass VS 2013 im Gegensatz zu früheren Versionen von VS nicht versucht, alles zu aktualisieren, was es berührt! Normalerweise ist es umgekehrt und ich versuche zu verhindern, dass meine verschiedenen VS-IDEs sich gegenseitig aktualisieren .proj- und .sln-Dateien :)
Simon Brangwin
@SimonBrangwin, was eine Verbesserung darstellt, außer dass Sie erwarten würden, dass das angeforderte Upgrade tatsächlich durchgeführt wird, wenn Sie explizit mit / upgrade gemäß den anderen Antworten aufrufen!
Stannius
Jeff danke! Dies ist die einzige Möglichkeit, mein VS 2013 sln so zu aktualisieren, dass es standardmäßig mit 2015 geöffnet wird. Außerdem musste ich den Lösungs-Explorer öffnen und den Lösungsknoten oben im Explorer-Baum manuell auswählen, um den Namen 'Speichern (Name' anzuzeigen ) .sln als 'Option im Menü Datei.
ToastyMallows
6

Um dieses Problem zu lösen, habe ich gerade die folgenden Zeilen der SLN-Datei geändert:

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

in diese:

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

Die Kommentarzeile muss geändert werden, da sie vom Solution Loader analysiert wird.

Zac
quelle
4

Dies funktioniert möglicherweise für Leser, die versuchen, eine Lösungsdatei auf Visual Studio 2015 zu aktualisieren. (Ich habe eine VS 2012-Lösung aktualisiert.)

  1. Öffnen Sie die Lösung in VS 2015.
  2. Fügen Sie der Lösung ein neues Projekt hinzu. (Ich habe ein Testprojekt hinzugefügt.)
  3. Entfernen Sie das Projekt.
  4. Speichern Sie die Lösung.

Möglicherweise möchten Sie den entfernten Projektordner zu diesem Zeitpunkt löschen, da Schritt 3 ihn nicht gelöscht hat.

Dies funktionierte für mich, als weder die Antworten von zumey noch die Antworten von TCC zutrafen .

BEARBEITEN

Metro Smurf hatte eine ähnliche, aber einfachere Antwort als meine auf eine ähnliche Frage . Seine Schritte waren:

  1. Offene Lösung in VS 2015
  2. Klicken Sie mit der rechten Maustaste auf Lösung> Hinzufügen> Neuer Lösungsordner (Name spielt keine Rolle)
  3. Lösung speichern
  4. Löschen Sie den neu hinzugefügten Lösungsordner
  5. Lösung speichern
Theophilus
quelle
Ich habe ein Projekt einfach umbenannt und danach zurückgesetzt. Auf diese Weise wird kein Ordner erstellt
Andy