web-dev-qa-db-fra.com

Comment ouvrir un ancien projet MVC dans Visual Studio 2012 ou Visual Studio 2013?

J'ai un ancien projet ASP.NET MVC 2 que je ne souhaite pas mettre à niveau vers MVC 3 ou MVC 4. Je travaille sur une nouvelle machine exécutant Windows 8, Visual Studio 2012 et Visual Studio 2013. Lorsque j'essaie d'ouvrir MVC 2 projet dans VS 2012 ou VS 2013 je reçois l'erreur:

Ce projet est incompatible avec l'édition actuelle de Visual Studio.

Le projet est ensuite déchargé et grisé dans l'Explorateur de solutions. Je ne veux pas installer une autre copie de Visual Studio. Comment ouvrir un ancien projet MVC dans une nouvelle version de Visual Studio?

152
ahsteele

L'ouverture d'un projet MVC non pris en charge dans Visual Studio 2012 ou Visual Studio 2013 est en fait assez facile à accomplir en deux étapes. En fait, comme le commentaire de bytebender indique , ces mêmes étapes devrait s'appliquent à et fonctionnent pour les projets MVC 1. Cependant, je ne les ai pas testés et je ne peux donc pas garantir qu’ils fonctionnent réellement.

En supposant que vous ne l'ayez pas déjà fait, la première étape consiste à télécharger et à installer MVC 1 , MVC 2 ou MVC (fermez Visual Studio avant de démarrer l'installation).

Une fois que vous avez installé la version appropriée de MVC, le projet ne sera toujours pas chargé dans VS 2012. En effet, les projets ASP.NET MVC sont un sous-type de projet du type de projet d'application Web. Cela signifie que le projet dispose de fonctionnalités supplémentaires et de fonctionnalités supplémentaires lorsqu'il est utilisé dans Visual Studio.

Visual Studio 2012 et Visual Studio 2013 ont tous deux une compatibilité ascendante limitée avec ASP.NET MVC et d'autres types de projets. Malheureusement, l'installation des anciens bits MVC n'a pas changé cela. Visual Studio 2012 est compatible avec les variantes de projet ASP.NET MVC 3 et 4. Visual Studio 2013 est compatible avec MVC 4 et MVC 5.

Pour que le projet soit chargé, vous devrez modifier le fichier de projet. Pour ce faire, cliquez avec le bouton droit sur le projet non chargé et sélectionnez Modifier. Ce qui ouvrira le fichier de projet en tant que fichier texte XML. Trouvez le noeud ProjectTypeGuids qui devrait ressembler à ceci:

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

Supprimez le Guide de projet approprié de la liste:

  • ASP.NET MVC 1: {603c0e0b-db56-11dc-be95-000d561079b0}
  • ASP.NET MVC 2: {F85E285D-A4E0-4152-9332-AB1D724D3325} (illustré dans l'exemple ci-dessus)
  • ASP.NET MVC 3: {E53F8FEA-EAE0-44A6-8774-FFD645390401}
  • ASP.NET MVC 4: {E3E379DF-F4C6-4180-9B81-6769533ABE47}

Avec le GUID approprié supprimé), le ProjectTypeGuids devrait ressembler à ceci:

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

Enregistrez le fichier et fermez l'éditeur de fichier de projet Visual Studio. Faites un clic droit sur le projet et sélectionnez recharger. Si le projet ne recharge pas, fermez et rouvrez Visual Studio. Vous devriez maintenant pouvoir utiliser votre ancien projet ASP.NET MVC dans votre nouvelle version de Visual Studio.

Une chose importante à noter est qu'après ces modifications, Visual Studio ne sait pas qu'il s'agit d'un projet ASP.NET MVC. Par conséquent, les fonctionnalités spécifiques au projet, telles que "Ajouter un contrôleur, une vue, etc." ne sera pas présent dans les menus.

290
ahsteele

J'ai utilisé l'approche de @ ahsteele (merci et 2x + 1!), Mais j'ai eu une autre erreur: -

.csproj: erreur: l'opération n'a pas pu être terminée. Chaîne de classe invalide

Je ne trouve aucune référence à la cause réelle de ce problème, mais j'ai pu faire en sorte que VS2012RTM charge le projet avec succès en modifiant le <ProjectGuid>. (Je ne sais pas du tout comment cela s’est produit - il s’agit d’une partie d’une solution volumineuse et VS08, VS10, VS11 Beta et VS2012RC ont tous mis à niveau le .csproj et .sln heures supplémentaires.

4
Ruben Bartelink

Dans VS2017, la solution consiste simplement à faire en sorte que <ProjectTypeGuids></ProjectTypeGuids> alors.

Pas d'espaces entre mesdames et messieurs, sinon vous perdrez 48 heures de votre temps.

Cordialement

0
WickStargazer