Wie öffne ich ein altes MVC-Projekt in Visual Studio 2012 oder Visual Studio 2013?

152

Ich habe ein altes ASP.NET MVC 2-Projekt, das ich nicht auf MVC 3 oder MVC 4 aktualisieren möchte. Ich arbeite auf einem neuen Computer unter Windows 8, Visual Studio 2012 und Visual Studio 2013. Wenn ich versuche, MVC zu öffnen 2 Projekt in VS 2012 oder VS 2013 Ich erhalte den Fehler:

Dieses Projekt ist nicht mit der aktuellen Edition von Visual Studio kompatibel

Das Projekt wird dann entladen und im Projektmappen-Explorer abgeblendet. Ich möchte keine weitere Kopie von Visual Studio installieren. Wie kann ich ein altes MVC-Projekt in einer neuen Version von Visual Studio öffnen?

ahsteele
quelle
Warum haben Sie diese Frage gestellt, wenn Sie es wussten?
Brian White
30
@BrianWhite Als ich heute Morgen auf dieses Problem stieß, führte ich eine schnelle Google-Suche durch und fand nichts. Da ich mit der Funktionsweise von VS-Projektdateien vertraut bin, hatte ich eine Vermutung über die Ursache und eine mögliche Lösung. Nachdem ich überprüft hatte, dass die Lösung funktioniert, wollte ich dieses Wissen teilen. Basierend auf Jeffs Richtlinien ist es in Ordnung, eigene Fragen zu stellen und zu beantworten .
Ahsteele
1
Danke, das wusste ich nicht. Es gibt eine Reihe von Dingen, die ich nicht gepostet habe, weil ich hier niemanden gesehen habe, der danach gesucht hat.
Brian White
8
ahsteele, danke für die Veröffentlichung der Lösung. Die Beantwortung der eigenen Fragen, wenn eine Lösung gefunden wird, erweitert die Community um Wissen.
Pomarc

Antworten:

291

Das Öffnen eines nicht unterstützten MVC-Projekts in Visual Studio 2012 oder Visual Studio 2013 ist in zwei Schritten recht einfach. In der Tat, wie bytebender Kommentar zeigt an , dieselben Schritte sollten auf und arbeiten für 1 Projekte MVC anwenden. Ich habe sie jedoch nicht getestet und kann daher nicht garantieren, dass sie tatsächlich funktionieren.

Angenommen, Sie haben dies noch nicht getan. Schritt 1 besteht darin, MVC 1 , MVC 2 oder MVC 3 herunterzuladen und zu installieren (schließen Sie Visual Studio, bevor Sie mit der Installation beginnen).

Sobald Sie die entsprechende Version von MVC installiert haben, wird das Projekt in VS 2012 immer noch nicht geladen. Dies liegt daran, dass ASP.NET MVC-Projekte ein Projektuntertyp des Webanwendungsprojekttyps sind. Dies bedeutet, dass dem Projekt zusätzliche Add-Ins und Funktionen zur Verfügung stehen, wenn es in Visual Studio verwendet wird.

Sowohl Visual Studio 2012 als auch Visual Studio 2013 sind in ihrer Abwärtskompatibilität mit ASP.NET MVC und anderen Projekttypen eingeschränkt. Leider hat die Installation der alten MVC-Bits daran nichts geändert. Visual Studio 2012 ist mit den Projektvarianten ASP.NET MVC 3 und 4 kompatibel . Visual Studio 2013 ist mit MVC 4 und MVC 5 kompatibel .

Um das Projekt zum Laden zu bringen, müssen Sie die Projektdatei ändern. Klicken Sie dazu mit der rechten Maustaste auf das entladene Projekt und wählen Sie Bearbeiten. Dadurch wird die Projektdatei als XML-Textdatei geöffnet. Suchen Sie den ProjectTypeGuidsKnoten, der ungefähr so ​​aussehen soll:

<ProjectTypeGuids>
    {F85E285D-A4E0-4152-9332-AB1D724D3325};{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}
</ProjectTypeGuids>

Entfernen Sie die entsprechenden Projektrichtlinien aus der Liste:

  • ASP.NET MVC 1: {603c0e0b-db56-11dc-be95-000d561079b0}
  • ASP.NET MVC 2: {F85E285D-A4E0-4152-9332-AB1D724D3325} (siehe Beispiel oben)
  • ASP.NET MVC 3: {E53F8FEA-EAE0-44A6-8774-FFD645390401}
  • ASP.NET MVC 4: {E3E379DF-F4C6-4180-9B81-6769533ABE47}

Wenn die entsprechende GUID entfernt wurde, ProjectTypeGuidssollte die ungefähr so aussehen:

<ProjectTypeGuids>
    {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}
</ProjectTypeGuids>

Speichern Sie die Datei und schließen Sie den Visual Studio-Projektdatei-Editor. Klicken Sie mit der rechten Maustaste auf das Projekt und wählen Sie Neu laden. Wenn das Projekt nicht neu geladen wird, schließen Sie Visual Studio und öffnen Sie es erneut. Sie sollten jetzt in der Lage sein, mit Ihrem alten ASP.NET MVC-Projekt in Ihrer neuen Version von Visual Studio zu arbeiten.

Beachten Sie, dass Visual Studio nach diesen Änderungen nicht weiß, dass es sich um ein ASP.NET MVC-Projekt handelt. daher die projektspezifischen Funktionen wie "Controller hinzufügen, Ansicht etc." wird nicht in Menüs vorhanden sein.

ahsteele
quelle
11
Dies funktioniert auch für MVC 1. Ich konnte nach dem Bearbeiten der Projektdatei nicht neu laden. Ich musste Visual Studio schließen und erneut öffnen und dann konnte es das MVC 1-Projekt laden. Vielen Dank! +1
Bytebender
1
Ausgezeichnet! funktioniert für mich mit einem kleinen Zusatz ... in meiner .cspproj hatte ich eine zusätzliche projectTypeGuid: {F85E285D-A4E0-4152-9332-AB1D724D3325}; die entfernt werden musste.
Kevin gewann am
2
@JookyDFW Das Problem mit dem Migrationsdienstprogramm ist, dass es sich um ein Migrationsdienstprogramm handelt . Aus Gründen, die in der Frage für dieses bestimmte Projekt nicht aufgeführt sind, konnte ich kein Upgrade von MVC 2 durchführen. Obwohl das Projekt nicht aktualisiert werden konnte, musste ich noch daran arbeiten. Das Ändern der Projektdatei wie beschrieben ist die beste (einzige?) Möglichkeit, mit einem MVC 2-Projekt in VS 2012 zu arbeiten.
ahsteele
3
@ RyanShripat das war überhaupt nicht meine Erfahrung. Die älteren Versionen von ASP.NET MVC müssen installiert sein, VS 2010 hat jedoch keine Auswirkungen auf die oben genannten.
Ahsteele
2
@Nanu Vielen Dank für den Kommentar, um klar zu sein, was ich damit gemeint habe: " Eine wichtige Sache, die zu beachten ist, ist, dass Visual Studio nach diesen Änderungen nicht weiß, dass es sich um ein ASP.NET MVC-Projekt handelt, daher die projektspezifischen Funktionen wie "Controller
hinzufügen
4

Ich habe @ ahsteeles Ansatz verwendet (danke und 2x + 1s!), Hatte aber einen weiteren Fehler: -

.csproj: Fehler: Der Vorgang konnte nicht abgeschlossen werden. Ungültige Klassenzeichenfolge

Ich kann keine Zitate für die wahre Ursache dafür finden, aber ich konnte VS2012RTM dazu bringen, das Projekt erfolgreich zu laden, indem ich das änderte <ProjectGuid>. (Keine Ahnung, wie dies passiert ist - es ist Teil einer großen Lösung und VS08, VS10, VS11 Beta und VS2012RC haben alle das .csprojund im .slnLaufe der Zeit aktualisiert .

Ruben Bartelink
quelle
1

In VS2017 besteht die Lösung darin, es einfach so zu machen <ProjectTypeGuids></ProjectTypeGuids>.

Keine Zwischenräume zwischen Damen und Herren, sonst werden 48 Stunden Ihrer Zeit verschwendet.

Grüße

WickStargazer
quelle