Come forzare l'apertura di un file Solution (SLN) in Visual Studio 2013?


102

Il tentativo di aprire una soluzione VS 2012 (file SLN) in modo esplicito in VS 2013 riesce. È sufficiente fare doppio clic su di esso in Esplora risorse per aprirlo comunque in VS 2012.

Ho letto " Visual Studio 2012 non converte la soluzione vs2010? " E ho seguito il suggerimento di "Salva con nome ..." il file della soluzione .

Tuttavia si apre in VS 2012 per impostazione predefinita.

La mia domanda:

Come modificare un file SLN per forzarne l'apertura in Visual Studio 2013?

Risposte:


123

Il .slnfile indica la versione prevista come una delle prime righe, ad esempio:

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

o:

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

Tuttavia, può utilizzarlo solo se l'applicazione predefinita per i .slnfile è "Selettore versione di Microsoft Visual Studio". Non è raro che l' .slnapplicazione predefinita sia invece una versione specifica . In Windows 8:

inserisci qui la descrizione dell'immagine

puoi dire quale è l'impostazione predefinita perché dice "continua a usare":

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine


2
@UweKeim hmmm; questa non è la mia esperienza; con il selettore di versione come predefinito, per me viene caricata la versione corretta di devenv per file sln - è possibile che tu abbia caricato quelle soluzioni in VS2013 in qualsiasi momento? che li aggiornerà
Marc Gravell

2
Bene, il tuo suggerimento è più che sufficiente per me. Adoro le icone delle cartelle ora di nuovo gialle, rispetto a quelle scure in VS 2012!
Uwe Keim

2
@UweKeim se guardi nel file sln, la seconda riga gli dice quale IDE aprire con: # Visual Studio 2013vs# Visual Studio 2012
Marc Gravell

1
@UweKeim Immagino che abbia un fallback di "se non riconosco il valore, o
quell'IDE

6
per me il launcher predefinito era già impostato su "Microsoft Visual Studio Version Selector" ma lanciava soluzioni realizzate in visual studio 2013 nell'ide 2012 !!. Ma riapplicare il "Selettore versione di Microsoft Visual Studio" come impostazione predefinita lo ha risolto. Ora il 2012 si apre nel 2012 ide e il 2013 si apre nel 2013 ide. (Sto usando Windows 7 a 64 bit)
Peter Flannery

35

Nota che puoi anche forzare l'aggiornamento di un file .sln o .proj utilizzando la riga di comando, dove devenv è la versione IDE di destinazione:

devenv "MyProject.sln" /upgrade

Esempio:

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

Notare che questo non apre Visual Studio. Un'alternativa è, dall'interno dell'IDE, selezionare "Salva con nome" per il file della soluzione e sovrascrivere o salvare la soluzione con un nuovo nome.

Ulteriori informazioni : http://msdn.microsoft.com/en-us/library/w15a82ay.aspx


1
QUESTO perché è scriptable e non hacky.
Tizio in CAD il

2
Purtroppo, questa tecnica non aggiorna sempre il file della soluzione.
Teofilo

Dopo devenv "MyProject.sln" /upgrade, dovresti anche modificare il file .sln, controlla @ Zac's ans.
Wei Guo

22

Sembra che l'OP abbia già una risposta funzionante ... ma per me il problema era diverso. Avevo una soluzione VS 2012 (diversi in realtà) e volevo convertirli al 2013 (che capisco sia una modifica banale al file .sln, ma volevo che fosse fatto automaticamente nel caso in cui ci fosse una logica di aggiornamento segreta di cui non ero a conoscenza) .

Quindi ho pensato di aprirlo in VS2013, si aggiorna automaticamente come previsto, quindi sarei impostato per fare doppio clic sulla soluzione e vederlo in VS2013 in futuro. Ma l'apertura in VS2013 NON aggiornava la soluzione automaticamente come previsto e non sono riuscito a trovare un modo esplicito per forzare l'aggiornamento dopo aver aperto il file in VS2013. Potrei lavorare con la soluzione, salvare le mie modifiche e chiudere VS2013, ma .sln rimarrebbe invariato e non aggiornato.

È venuto fuori che il mio problema era nel modo in cui stavo aprendo la soluzione ... come abitudine faccio clic con il pulsante destro del mouse sui file e seleziono "Apri con" per scegliere il programma che voglio utilizzare per aprire un file. Lo faccio spesso. Nota NON sto parlando di cambiare il programma predefinito "apri con" ma di aprire solo una volta un file con un programma specifico. Quindi farei clic con il pulsante destro del mouse sul file .sln ... aperto con Visual Studio 2013 ... e nulla verrebbe aggiornato.

Alla fine ho pensato di entrare in VS2013, quindi fare File> Apri e selezionare il file .sln (questo mi è estraneo dato che difficilmente apro qualcosa in questo modo, forse sei allo stesso modo). Comunque questo ha aggiornato immediatamente il file della soluzione.

Dopo l'aggiornamento, le righe 2-3 del file .sln sono cambiate da questa:

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

a questa:

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

Quindi, dalla mia esperienza, per aggiornare automaticamente un VS2012 .sln a VS2013, è necessario aprire VS2013 e selezionare .sln dalla finestra di dialogo File> Apri. L'uso della shell di Explorer per forzare l'apertura del file .sln in VS2013 non richiama la logica di aggiornamento (apparentemente).

Come ulteriore nota, ho provato con un'altra soluzione, e dopo aver apportato modifiche tramite Configuration Manager (che ovviamente "tocca" il file .sln) ha aggiornato un VS2012 a VS2013, anche dopo averlo aperto con il tasto destro del mouse apri con.


1
Questo è esattamente quello che stavo cercando di fare. Ho l'aggiornamento 3 e un progetto viene aggiornato automaticamente, ma l'altro cambia solo quando apro Configuration Manager. Grazie per i suggerimenti!
Erica

2
Ho anche aperto un vs 2012 .sln da VS 2013 ma per me NON è stato aggiornato. Strano.
PositiveGuy

4
Non è l'apertura della soluzione in VS 2013 che attiva l'aggiornamento, è un'azione che modifica la soluzione, come la modifica di un'impostazione nella configurazione attiva.
bleater

l'ho provato ad aggiornare da vs2013 a vs2015 e funziona.
Dingxin Xu

7

Avevo una soluzione che era stata precedentemente aggiornata con successo dal 2010 al 2013, ma mostrava ancora .sln associato al 2010.

Ho testato tutti i metodi forniti in questo thread e l'unico che ha corretto con successo il .sln è stato aprire solo Visual Studio 2013, quindi aprire la soluzione che era ancora associata al 2010 nell'IDE, quindi utilizzare [File]> [Salva (nome) .sln as] per sovrascrivere il file .sln esistente.

L'impostazione dell'associazione file di .sln come "selettore di versione di Visual Studio" non ha apportato modifiche e la soluzione ha continuato ad aprirsi nel 2010.

Il metodo devenv (nome) .sln / upgrade non ha apportato modifiche al mio file .sln.

L'hacking del testo grezzo del file .sln ha danneggiato il mio e non si apriva affatto.


Salute Jeff, mi sono imbattuto nella tua stessa situazione. Devo dire però che è bello che Microsoft abbia deciso che VS 2013 non tenta di aggiornare tutto ciò che tocca, a differenza delle versioni precedenti di VS! Di solito è il contrario e sto cercando di impedire ai miei diversi IDE VS di aggiornarsi a vicenda i file .proj e .sln :)
Simon Brangwin

@SimonBrangwin che è un miglioramento, tranne per il fatto che se chiami esplicitamente con / upgrade come per le altre risposte, ti aspetteresti che eseguisse effettivamente l'aggiornamento richiesto!
stannius

Grazie Jeff! Questo è l'unico modo che ho trovato per aggiornare il mio VS 2013 sln in modo che si apra per impostazione predefinita con 2015. Ho anche dovuto aprire Esplora soluzioni e selezionare manualmente il nodo della soluzione nella parte superiore dell'albero Explorer per vedere il 'Salva (nome ) .sln as 'nel menu File.
ToastyMallows

6

Per risolvere questo problema ho appena modificato le seguenti righe del file .sln:

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

in questi:

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

La riga di commento deve essere modificata man mano che viene analizzata dal caricatore della soluzione.


4

Questo potrebbe funzionare per i lettori che tentano di aggiornare un file di soluzione a Visual Studio 2015. (Ho aggiornato una soluzione VS 2012).

  1. Apri la soluzione in VS 2015.
  2. Aggiungi un nuovo progetto alla soluzione. (Ho aggiunto un progetto di prova.)
  3. Rimuovi il progetto.
  4. Salva la soluzione.

Potresti voler eliminare la cartella del progetto rimosso in questo momento poiché il passaggio 3 non l'ha eliminata.

Questo ha funzionato per me, quando né del zumeydi TCC risposte hanno fatto.

MODIFICARE

Metro Smurf aveva una risposta simile, ma più semplice della mia per una domanda simile . I suoi passi erano:

  1. Soluzione aperta in VS 2015
  2. Fare clic con il tasto destro del mouse sulla soluzione> Aggiungi> Nuova cartella della soluzione (il nome non ha importanza)
  3. Salva soluzione
  4. Elimina la cartella della soluzione appena aggiunta
  5. Salva soluzione

Ho semplicemente rinominato un progetto e successivamente ripristinato. In questo modo non viene creata alcuna cartella
Andy
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.