Comment forcer l'ouverture d'un fichier de solution (SLN) dans Visual Studio 2013?

102

Essayer d'ouvrir une solution VS 2012 (fichier SLN) explicitement dans VS 2013 réussit. Double-cliquez simplement dessus dans l'Explorateur Windows pour l'ouvrir toujours dans VS 2012 à la place.

J'ai lu " Visual Studio 2012 ne convertit pas la solution vs2010? " Et j'ai suivi la suggestion "Enregistrer sous ..." le fichier de solution .

Pourtant, il ouvre dans VS 2012 par défaut.

Ma question:

Comment modifier un fichier SLN pour forcer son ouverture dans Visual Studio 2013?

Uwe Keim
la source

Réponses:

123

Le .slnfichier indique la version prévue comme l'une des premières lignes - par exemple:

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

ou:

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

Cependant - il ne peut l'utiliser que si l'application par défaut pour les .slnfichiers est le "Sélecteur de version de Microsoft Visual Studio". Il n'est pas rare que l' .slnapplication par défaut soit une version spécifique à la place. Dans Windows 8:

entrez la description de l'image ici

vous pouvez dire quelle est la valeur par défaut car elle dit "continuez à utiliser":

entrez la description de l'image ici

entrez la description de l'image ici

Marc Gravell
la source
2
@UweKeim hmmm; ce n'est pas mon expérience; avec le sélecteur de version par défaut, pour moi, la version correcte de devenv est chargée par fichier sln - est-il possible que vous ayez chargé ces solutions dans VS2013 à un moment donné? qui les améliorera
Marc Gravell
2
Eh bien, votre suggestion me suffit amplement. J'adore les icônes de dossier maintenant à nouveau jaunes, comparées à celles sombres dans VS 2012!
Uwe Keim
2
@UweKeim si vous regardez dans le fichier sln, la deuxième ligne lui indique quel IDE ouvrir avec: # Visual Studio 2013vs# Visual Studio 2012
Marc Gravell
1
@UweKeim J'imagine qu'il a une solution de secours de "si je ne reconnais pas la valeur, ou que l'EDI n'est pas installé, utilisez l'IDE le plus récent installé"
Marc Gravell
6
pour moi, le lanceur par défaut était déjà défini sur "Microsoft Visual Studio Version Selector" mais il lançait des solutions made in visual studio 2013 dans l'ide 2012 !!. Mais la réapplication du «sélecteur de version de Microsoft Visual Studio» par défaut l'a corrigé. Maintenant 2012 ouvre en 2012 ide et 2013 ouvre en 2013 ide. (J'utilise Windows 7 64bit)
Peter Flannery
35

Notez que vous pouvez également forcer la mise à niveau d'un fichier .sln ou .proj en utilisant la ligne de commande, où devenv est la version IDE cible:

devenv "MyProject.sln" /upgrade

Exemple:

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

Notez que cela n'ouvre pas Visual Studio. Une alternative est, à partir de l'EDI, de sélectionner «Enregistrer sous» pour votre fichier de solution et d'écraser ou d'enregistrer la solution sous un nouveau nom.

En savoir plus: http://msdn.microsoft.com/en-us/library/w15a82ay.aspx

Zumey
la source
1
CECI parce que c'est scriptable et non hacky.
Bloke CAD
2
Malheureusement, cette technique ne met pas toujours à jour le fichier de solution.
Theophilus
Après le devenv "MyProject.sln" /upgrade, vous devez également éditer le fichier .sln, vérifiez les ans de @ Zac.
Wei Guo
22

On dirait que l'OP a déjà une réponse fonctionnelle ... mais pour moi, le problème était différent. J'avais une solution VS 2012 (plusieurs en fait) et je voulais les convertir en 2013 (ce que je comprends est une modification triviale du fichier .sln, mais je voulais que cela soit fait automatiquement au cas où il y aurait une logique de mise à niveau secrète dont je n'étais pas au courant) .

J'ai donc pensé que je l'ouvrirais dans VS2013, qu'il serait automatiquement mis à niveau comme prévu, puis je serais configuré pour double-cliquer sur la solution et la voir dans VS2013 à l'avenir. Mais l'ouverture dans VS2013 ne mettait PAS à niveau la solution pour moi automatiquement comme prévu et je ne pouvais pas trouver un moyen explicite de forcer la mise à niveau après l'ouverture du fichier dans VS2013. Je pourrais travailler avec la solution, enregistrer mes modifications et fermer VS2013, mais le .sln resterait inchangé et non mis à niveau.

Il s'avère que mon problème était de savoir comment j'ouvrais la solution ... par habitude, je clique avec le bouton droit sur les fichiers et sélectionne «ouvrir avec» pour choisir le programme que je veux utiliser pour ouvrir un fichier. Je fais cela fréquemment. Remarque Je ne parle PAS de changer le programme par défaut «ouvrir avec», mais simplement d'ouvrir un fichier avec un programme spécifique une fois. Je ferais donc un clic droit sur le fichier .sln ... ouvert avec Visual Studio 2013 ... et rien ne serait mis à niveau.

Finalement, j'ai pensé aller dans VS2013, puis faire Fichier> Ouvrir et sélectionner le fichier .sln (cela m'est étranger car je n'ouvre presque jamais rien de cette façon, peut-être que vous êtes de la même manière). Quoi qu'il en soit, cela a mis à jour le fichier de solution instantanément.

Après la mise à niveau, les lignes 2 et 3 du fichier .sln ont changé de ceci:

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

pour ça:

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

Donc, d'après mon expérience, pour mettre à jour automatiquement un VS2012 .sln vers VS2013, vous devez ouvrir VS2013 et sélectionner le .sln dans la boîte de dialogue Fichier> Ouvrir. L'utilisation du shell de l'explorateur pour forcer l'ouverture du fichier .sln dans VS2013 n'appelle pas la logique de mise à niveau (apparemment).

En outre, j'ai testé avec une autre solution, et après avoir apporté des modifications via Configuration Manager (qui "touche" évidemment le fichier .sln), il a mis à niveau un VS2012 vers VS2013, même après l'avoir ouvert via un clic droit ouvrir avec.

TCC
la source
1
C'est exactement ce que j'essayais de faire. J'ai la mise à jour 3 et un projet mis à jour automatiquement, mais l'autre ne changerait que lorsque j'ai ouvert le gestionnaire de configuration. Merci pour les conseils!
Erica
2
J'ai même ouvert un .sln vs 2012 à partir de VS 2013, mais pour moi, il n'a PAS été mis à niveau. Bizarre.
PositiveGuy
4
Ce n'est pas l'ouverture de la solution dans VS 2013 qui déclenche la mise à niveau, c'est une action qui modifie la solution, comme la modification d'un paramètre dans la configuration active.
bleater
Je l'ai essayé de passer de vs2013 à vs2015 et cela fonctionne.
Dingxin Xu
7

J'avais une solution qui avait déjà été mise à niveau avec succès de 2010 à 2013, mais qui montrait toujours le .sln comme associé à 2010.

J'ai testé toutes les méthodes données dans ce fil et la seule qui a réussi à corriger le .sln était d'ouvrir Visual Studio 2013 seul, puis d'ouvrir la solution qui était encore associée à 2010 dans l'EDI, puis d'utiliser le [Fichier]> [Enregistrer (nom) .sln as] pour écraser le fichier .sln existant.

La définition du fichier associé du .sln comme "sélecteur de version de Visual Studio" n'a apporté aucune modification et la solution a continué à s'ouvrir en 2010.

La méthode devenv (nom) .sln / upgrade n'a apporté aucune modification à mon fichier .sln.

Le piratage du texte brut du fichier .sln a corrompu le mien et il ne s'ouvrirait pas du tout.

Jeff
la source
Salut Jeff, je viens de rencontrer la même situation que toi. Je dois dire que c'est bien que Microsoft ait décidé que VS 2013 n'essaye pas de mettre à niveau tout ce qu'il touche, contrairement aux versions précédentes de VS! Habituellement, c'est l'inverse, et j'essaie d'empêcher mes différents IDE VS de se mettre à niveau les uns les autres .proj et .sln :)
Simon Brangwin
@SimonBrangwin, ce qui est une amélioration, sauf que si vous appelez explicitement avec / upgrade selon les autres réponses, vous vous attendez à ce qu'il effectue réellement la mise à niveau demandée!
stannius le
Merci Jeff! C'est le seul moyen que j'ai pu trouver pour mettre à niveau mon sln VS 2013 pour l'ouvrir par défaut avec 2015. J'ai également dû ouvrir l'explorateur de solutions et sélectionner manuellement le nœud de solution en haut de l'arborescence de l'explorateur pour voir le 'Enregistrer (nom ) .sln comme option dans le menu Fichier.
ToastyMallows
6

Pour résoudre ce problème, je viens de modifier les lignes suivantes du fichier .sln:

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

dans ces:

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

La ligne de commentaire doit être modifiée au fur et à mesure qu'elle est analysée par le chargeur de solution.

Zac
la source
4

Cela peut fonctionner pour les lecteurs qui tentent de mettre à niveau un fichier de solution vers Visual Studio 2015. (J'ai mis à niveau une solution VS 2012.)

  1. Ouvrez la solution dans VS 2015.
  2. Ajoutez un nouveau projet à la solution. (J'ai ajouté un projet de test.)
  3. Supprimez le projet.
  4. Sauvegardez la solution.

Vous souhaiterez peut-être supprimer le dossier de projet supprimé à ce stade, car l'étape 3 ne l'a pas supprimé.

Cela a fonctionné pour moi ni de zumey ni de TCC réponses ont fait.

ÉDITER

Metro Smurf avait une réponse similaire, mais plus facile que la mienne pour une question similaire . Ses pas étaient:

  1. Solution ouverte dans VS 2015
  2. Cliquez avec le bouton droit sur solution> Ajouter> Nouveau dossier de solution (le nom n'a pas d'importance)
  3. Enregistrer la solution
  4. Supprimer le dossier de solution nouvellement ajouté
  5. Enregistrer la solution
Théophile
la source
J'ai simplement renommé un projet et je l'ai rétabli par la suite. De cette façon, aucun dossier n'est créé
Andy