web-dev-qa-db-fra.com

Visual Studio 2012 ne convertit-il pas la solution vs2010?

J'ai ouvert ma solution vs2010 avec vs2012, mais aucune conversion n'a été effectuée entre 2008 et 2010. Donc, ma solution reste identique à l’étiquette 10. Lorsque je crée une nouvelle solution, elle porte bien sûr 11 étiquettes. Je n'ai aucun problème à courir comme ça mais je suis curieux. Y a-t-il une différence? Si oui, comment convertir en solution vs2012?

68
batmaci

Il y a quelques exceptions , mais vous pourrez généralement ouvrir les mêmes fichiers de projet et de solution dans les fichiers VS2012 et VS2010 SP1.

VS2012 peut convertir des projets lorsque vous les ouvrez pour la première fois, mais les modifications sont (sauf celles notées dans le document lié) rétrocompatibles avec VS2010 (c.-à-d., Si nécessaire, en utilisant des conditions s’applique uniquement à l’une des versions lorsqu’elles sont chargées). La plupart des types de projets resteront toutefois intacts.

32
Joachim Isaksson

J'ai réussi à "convertir" le fichier de solution pour changer la ligne contenant "# Visual Studio 2010" en "# Visual Studio 2012" dans le fichier .SLN.

106
RuudKok

La modification manuelle du fichier de solution n'est ni nécessaire ni recommandée. Ouvrez simplement la solution VS2010 dans VS2012, cliquez sur la solution (tout en haut de l'explorateur de solutions), puis utilisez Fichier | Enregistrer sous pour écraser le fichier d'origine. Cela convertira efficacement le fichier de solution VS2010 en un fichier de solution VS2012.

90
2Toad

Il s'agit de la compatibilité de Visual Studio 2012

Si vous avez créé vos actifs dans Visual Studio 2010 avec Service Pack 1 (SP1), bon nombre d'entre eux seront chargés et exécutés dans Visual Studio 2012 sans autre action de votre part.

De nombreux actifs rouvriront également dans Visual Studio 2010 avec SP1 sans aucun problème, même après leur ouverture dans Visual Studio 2012.

6
user1619962

Cela fait une différence pour les projets C++, car le compilateur 2012 (VC11) ne sera utilisé que sur les projets explicitement 2012, et non sur les projets 2010 ouverts dans VS 2012. Certaines améliorations C++ 11 sont disponibles avec le compilateur VC11 mais pas avec VC10 (voir ceci SO Réponse pour un résumé), y compris:

  • Plage basée sur les boucles
  • Nouveaux en-têtes de bibliothèque standard (atomic, mutex, thread, ...)
  • Tailles de conteneur de bibliothèque standard plus petites
  • (Et plus à suivre lorsque le CTP de novembre 2012 est remis à VS 2012)

Pour convertir un projet VS 2010 en VS2012 , il n'est pas nécessaire de modifier manuellement le fichier de solution ou "Enregistrer sous" sur le projet existant . Au lieu:

Si vous refusez la mise à jour lorsque vous y êtes invité pour la première fois, vous pouvez mettre à jour le projet ultérieurement en ouvrant le menu Projet et en choisissant Mettre à jour. Projets VC++ ... [en haut des options du menu]

De MSDN "" Comment: mettre à niveau des projets Visual C++ vers Visual Studio 2012 "
(Cette page est liée à un lien MSDN de @ Joachim ) , mais je souhaitais avoir la réponse ici SO = depuis qu'un certain nombre d'autres réponses ont suggéré des solutions manuelles au lieu de cette fonctionnalité de VS 2012)

6
Daryn

Dans mon cas, j'avais quelques éléments Visual Source Safe (mon projet a été créé avec Visual Studio 2003/2005, oui, très vieux!)

Une fois que j'ai supprimé manuellement les éléments VSS, la conversion a réussi. PS: Je sais que c'est à propos de VS2010, mais peut-être que cela aide les autres.

2
Adi

Je suis tombé sur cette question alors que je recherchais une solution à un problème spécifique: MSBuild ne parvenait pas à exécuter la cible Publish par rapport à une solution VS2012 qui avait débuté dans VS2010 lorsqu'elle avait été appelée à partir de la ligne de commande (notamment via 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 recherchait les cibles Azure SDK 2.3 à l’emplacement de VS10 (C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Windows Azure Tools\2.3\Microsoft.WindowsAzure.targets). Sayed Ibrahim Hashimi en explique la cause dans un message de blog et, si j'ai bien compris, certaines décisions ont été prises tout en permettant la compatibilité entre versions de fichiers de solution. La solution était simple: ajoutez la propriété VisualStudioVersion à l'invocation MSBuild, à peu près comme ceci:

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

En pratique, cela remplace les éléments suivants dans chaque fichier csproj:

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

Vraisemblablement, vous pourriez obtenir le même résultat en éditant tous ces éléments à la main pour remplacer 10.0 par 11.0, mais cela risquerait de faire perdre la compatibilité en amont, je ne l'ai pas essayée. Je n'ai pas non plus essayé une mise à jour de VS2013 pour voir si le problème persiste.

Donc, pour conclure, répondez à la question: oui, il y a quelques différences avant de "convertir" (en utilisant l'une des méthodes proposées par d'autres répondants) et certaines différences subsistent par la suite.

1
Dave Gregory

Vous pouvez convertir un projet de VS2010 en VS2012 en procédant comme suit:

  1. Ajoutez le projet 2010 à votre solution VS2012 en cliquant avec le bouton droit de la souris sur votre solution dans l'explorateur de solutions et en sélectionnant Ajouter -> Projet existant ...

  2. Le projet apparaîtra dans la solution et (Visual Studio 2010) sera ajouté à son nom.

  3. Cliquez avec le bouton droit sur le projet ajouté et sélectionnez Propriétés.

  4. Dans le volet Propriétés de configuration -> Général, modifiez le paramètre du champ Platform Toolset en Visual Studio 2012 (v110).

  5. Répétez l'opération pour chaque type de configuration, par exemple. Libérer et déboguer.

1
zooropa

Ceci est légèrement différent, mais va dans le même sens, donc au cas où cela aiderait quelqu'un:

Je chargeais un projet où il semblait que c'était en train de se charger, puis je montrais tous les projets indisponibles. Aucune erreur ne figurait dans le rapport de migration. J'ai essayé de recharger la solution et les projets plusieurs fois, en utilisant diverses méthodes, y compris des suggestions.

Enfin, j'ai trouvé une option "Résoudre les erreurs" en cliquant avec le bouton droit de la souris sur la solution dans l'explorateur de solutions. VS a de nouveau subi un processus de chargement et cela a fonctionné; pas de problème.

Je ne sais pas ce que cela a fait différemment cette fois-ci, mais apparemment, cela a fait une différence.

0
user2585308

il suffit de modifier simplement le fichier .sol pour changer la version en 11

comme ça

Fichier de solution Microsoft Visual Studio, Format Version 12.00

0
Same7Farouk