Visual Studio 2012 konvertiert keine vs2010-Lösung?

68

Ich habe meine vs2010-Lösung mit vs2012 geöffnet, aber von 2008 bis 2010 wurde keine Konvertierung durchgeführt. Meine Lösung bleibt also immer noch die gleiche wie 10 Etiketten. Wenn ich eine neue Lösung mache, hat sie natürlich 11 Etiketten. Ich habe kein Problem damit, aber ich bin neugierig. Gibt es einen Unterschied? Wenn ja, wie konvertiere ich in eine vs2012-Lösung?

Emil
quelle

Antworten:

32

Es gibt einige Ausnahmen , aber meistens können Sie dieselben Projekt- und Lösungsdateien in VS2012 und VS2010 SP1 öffnen.

VS2012 kann Projekte konvertieren, wenn Sie sie zum ersten Mal öffnen, aber die Änderungen sind (außer im verknüpften Dokument angegeben) abwärtskompatibel mit VS2010 (dh es werden Bedingungen verwendet, die nur für beide Versionen beim Laden gelten müssen). Die meisten Projekttypen bleiben jedoch völlig unberührt .

Joachim Isaksson
quelle
106

Ich habe es geschafft, die Lösungsdatei zu "konvertieren", um die Zeile mit "# Visual Studio 2010" in "# Visual Studio 2012" in der SLN-Datei zu ändern.

RuudKok
quelle
5
Arbeitete für mich - einfache Lösung! Darüber hinaus ist diese Antwort wichtig, da Sie so sicherstellen können, dass Ihre Mitarbeiter (standardmäßig) Ihre Lösung mit der richtigen Version von Visual Studio öffnen. Wenn Mitarbeiter es aus der Quellcodeverwaltung herunterladen, ist es schön, dass wenn sie auf die SLN-Datei in ihrem Dateisystem doppelklicken, diese in Visual Studio 2012 ... statt 2010
geöffnet wird
Nur für den Fall, dass Sie es nicht wissen. Diese Problemumgehung funktioniert nur, wenn Sie SP1 installiert haben.
Cleiton
1
Cleiton: Ich habe diese 'Lösung' einige Monate vor der Veröffentlichung von SP1 veröffentlicht und sie hat zu diesem Zeitpunkt für mich funktioniert.
RuudKok
4
@DanielSchilling: Es kann ein Problem sein, wenn das neu konvertierte Projekt eine 2012 vorhandene Funktion verwendet, die 2010 nicht vorhanden ist. Ein Beispiel ist, dass durch das Projektupdate das Plattform-Toolset auf v110 geändert werden kann, von dem VS2010 nichts weiß und würde zu einem Buildfehler Fehler MSB8008 führen.
Edward
2
Ich musste "Format Version 11.00" in der sln-Datei auf 12.00 ändern.
Gerleim
90

Eine manuelle Bearbeitung der Lösungsdatei ist nicht erforderlich oder wird empfohlen. Öffnen Sie einfach die VS2010-Lösung in VS2012, klicken Sie mit der linken Maustaste auf die Lösung (ganz oben im Projektmappen-Explorer) und verwenden Sie dann Datei | Speichern unter , um die Originaldatei zu überschreiben. Dadurch wird die VS2010-Lösungsdatei effektiv in eine VS2012-Lösungsdatei konvertiert.

2Laden
quelle
6
Dies funktioniert nur, wenn ich zuerst mit der linken Maustaste auf die Lösung
klicke
2
Mir gefällt das besser, als die Lösungsdatei manuell zu bearbeiten - was ich früher getan habe, um das zu erledigen.
David Hay
In VS2013 bearbeitet diese Methode insgesamt 4 Zeilen und fügt einen Kommentar zur Mindestversion hinzu, was auf einigen Systemen praktisch sein kann. Ich empfehle das.
11.
1
Ich kann nicht glauben, dass es so einfach ist, ich habe es tagelang versucht, weil meine Lösung ein riesiges Projekt ist und ich nichts Dummes tun wollte, das die Integrität der Lösungen auf der ganzen Linie gefährden könnte. Danke 2Toad!
Sturm
6

Es geht um Visual Studio 2012-Kompatibilität

Wenn Sie Ihre Assets in Visual Studio 2010 mit Service Pack 1 (SP1) erstellt haben, werden viele davon in Visual Studio 2012 geladen und ausgeführt, ohne dass Sie weitere Maßnahmen ergreifen müssen.

Viele Assets werden auch in Visual Studio 2010 mit SP1 ohne Probleme wieder geöffnet, selbst nachdem Sie diese Assets in Visual Studio 2012 geöffnet haben

user1619962
quelle
6

Für C ++ - Projekte macht es einen Unterschied, da der 2012-Compiler (VC11) nur für Projekte verwendet wird, die explizit 2012 sind, nicht für 2010-Projekte, die in VS 2012 geöffnet wurden. Einige C ++ 11-Verbesserungen sind mit dem VC11-Compiler verfügbar, jedoch nicht mit VC10 ( eine Zusammenfassung finden Sie in dieser SO-Antwort ), einschließlich:

Um von einem VS 2010-Projekt zu einem VS2012-Projekt zu konvertieren , müssen Sie die Lösungsdatei oder das Speichern unter dem vorhandenen Projekt nicht manuell bearbeiten . Stattdessen:

Wenn Sie das Update ablehnen , wenn zuerst gefragt werden , können Sie das Projekt aktualisieren später durch das Öffnen Projekt - Menü und wählen Sie Update - VC ++ Projekte ... [an der Spitze der Menüoptionen]

Aus MSDNs " Gewusst wie: Aktualisieren von Visual C ++ - Projekten auf Visual Studio 2012 "
(Diese Seite wurde über den MSDN-Link von @ Joachim verlinkt , aber ich wollte die Antwort hier auf SO haben, da eine Reihe anderer Antworten manuelle Problemumgehungen anstelle dieses VS 2012 vorschlug Merkmal)

Daryn
quelle
Das ist großartig, aber diese Option scheint manchmal zufällig zu verschwinden, insbesondere in Lösungen mit C ++ / CLI- und C # -Projekten.
Wilbert
2

In meinem Fall hatte ich einige Visual Source Safe-Inhalte (mein Projekt wurde mit Visual Studio 2003/2005 erstellt, ja, sehr alt!)

Nachdem ich das VSS-Material manuell entfernt hatte, war die Konvertierung erfolgreich. PS: Ich weiß, es geht um VS2010, aber vielleicht hilft das anderen.

Adi
quelle
1

Sie können ein Projekt von VS2010 nach VS2012 konvertieren, indem Sie folgende Schritte ausführen:

  1. Fügen Sie das 2010-Projekt zu Ihrer VS2012-Lösung hinzu, indem Sie im Projektmappen-Explorer mit der rechten Maustaste auf Ihre Lösung klicken und Hinzufügen -> Vorhandenes Projekt ... auswählen.

  2. Das Projekt wird in der Lösung angezeigt und an seinen Namen angehängt (Visual Studio 2010).

  3. Klicken Sie mit der rechten Maustaste auf das hinzugefügte Projekt und wählen Sie Eigenschaften.

  4. Ändern Sie im Bereich Konfigurationseigenschaften -> Allgemein die Einstellung im Feld Platform Toolset in Visual Studio 2012 (v110).

  5. Wiederholen Sie diesen Vorgang für jeden Konfigurationstyp, z. B. Release und Debug.

zooropa
quelle
1

Ich bin auf diese Frage gestoßen, als ich nach einer Lösung für ein bestimmtes Problem gesucht habe: MSBuild konnte das Veröffentlichungsziel nicht für eine VS2012-Lösung ausführen, die in VS2010 gestartet wurde, als sie über die Befehlszeile aufgerufen wurde (speziell über TeamCity):

error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Windows Azure Tools\2.3\Microsoft.WindowsAzure.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.

MSBuild suchte nach den Azure SDK 2.3-Zielen am VS10-Speicherort (C: \ Programme (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ Windows Azure Tools \ 2.3 \ Microsoft.WindowsAzure.targets). Die Ursache wird von Sayed Ibrahim Hashimi in einem Blog-Beitrag erklärt und läuft , wie ich es verstanden habe, auf einige Entscheidungen hinaus, die sie getroffen haben, während sie die versionierungsübergreifende Kompatibilität für Lösungsdateien ermöglichen. Die Lösung war einfach: Fügen Sie dem MSBuild-Aufruf die VisualStudioVersion-Eigenschaft hinzu:

msbuild.exe MyAwesomeWeb.sln /p:VisualStudioVersion=11.0

In der Praxis überschreibt dies Folgendes in jeder csproj-Datei:

<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>

Vermutlich könnten Sie das gleiche Ergebnis erzielen, wenn Sie alle von Hand bearbeiten, um 10.0 durch 11.0 zu ersetzen, aber das könnte die Abwärtskompatibilität beeinträchtigen - ich habe es nicht versucht. Ich habe auch kein Update auf VS2013 versucht, um festzustellen, ob das Problem weiterhin besteht.

Zum Abschluss beantworten Sie die Frage: Ja, es gibt einige Unterschiede, bevor Sie "konvertieren" (unter Verwendung einer der von anderen Antwortenden angebotenen Methoden), und einige Unterschiede bleiben danach bestehen.

Dave Gregory
quelle
0

Dies ist etwas anders, aber in die gleiche Richtung, falls es jemandem hilft:

Ich habe ein Projekt geladen, bei dem es so aussah, als würde es geladen, und dann alle Projekte als nicht verfügbar angezeigt. Der Migrationsbericht enthielt keine Fehler. Ich habe viele Male versucht, die Lösung und die Projekte neu zu laden, wobei ich verschiedene Methoden verwendet habe, einschließlich Vorschläge hier.

Schließlich fand ich eine Option "Fehler beheben", als ich im Projektmappen-Explorer mit der rechten Maustaste auf die Lösung klickte. VS hat erneut einen Ladevorgang durchlaufen und es hat funktioniert. keine Probleme.

Ich weiß nicht, was es damals anders gemacht hat, aber anscheinend hat es einen Unterschied gemacht.


quelle
0

Es ist zu einfach, einfach die .sol-Datei zu bearbeiten und die Version auf 11 zu ändern

so was

Microsoft Visual Studio-Lösungsdatei, Format Version 12.00

Visual Studio 2012
Same7Farouk
quelle