Come posso aprire un vecchio progetto MVC in Visual Studio 2012 o Visual Studio 2013?


152

Ho un vecchio progetto ASP.NET MVC 2 che non voglio aggiornare a MVC 3 o MVC 4. Sto lavorando su un nuovo computer con Windows 8, Visual Studio 2012 e Visual Studio 2013. Quando provo ad aprire MVC 2 progetto in VS 2012 o VS 2013 ricevo l'errore:

Questo progetto non è compatibile con l'attuale edizione di Visual Studio

Il progetto viene quindi scaricato e disattivato in Esplora soluzioni. Non voglio installare un'altra copia di Visual Studio. Come posso aprire un vecchio progetto MVC in una nuova versione di Visual Studio?


Perché hai fatto questa domanda se lo sapevi?
Brian White,

30
@BrianWhite Quando mi sono imbattuto in questo problema questa mattina ho fatto una rapida ricerca su Google e non ho trovato nulla. Dato che ho familiarità con il funzionamento dei file di progetto VS, ho avuto un'ipotesi sulla causa e una potenziale soluzione. Una volta verificato che la soluzione funzionava, volevo condividere questa conoscenza. Sulla base delle linee guida di Jeff, va bene fare e rispondere alle proprie domande .
ahsteele,

1
Grazie, non lo sapevo. Ci sono un certo numero di cose che non ho pubblicato perché non ho visto nessuno che lo cercasse qui.
Brian White,

8
ahsteele, grazie per aver pubblicato la soluzione. Rispondere alle proprie domande, quando viene trovata una soluzione, aggiunge conoscenza alla comunità.
Pomarc,

Risposte:


291

L'apertura di un progetto MVC non supportato in Visual Studio 2012 o Visual Studio 2013 è in realtà abbastanza facile da realizzare con due passaggi. In effetti, come indica il commento di bytebender , questi stessi passaggi dovrebbero applicarsi e funzionare per i progetti MVC 1. Tuttavia, non li ho testati e quindi non posso garantire che funzionino davvero.

Supponendo che non l'abbia già fatto, il primo passo è scaricare e installare MVC 1 , MVC 2 o MVC 3 (chiudere Visual Studio prima di iniziare l'installazione).

Una volta installato il sapore appropriato di MVC, il progetto non verrà ancora caricato in VS 2012. Questo perché i progetti ASP.NET MVC sono un sottotipo di progetto del tipo di progetto Applicazione Web. Ciò significa che il progetto ha ulteriori componenti aggiuntivi e funzionalità disponibili quando utilizzato in Visual Studio.

Sia Visual Studio 2012 che Visual Studio 2013 sono limitati nella compatibilità con le versioni precedenti di ASP.NET MVC e altri tipi di progetti. Sfortunatamente, l'installazione dei vecchi bit MVC non ha cambiato questo. Visual Studio 2012 è compatibile con le varianti di progetto ASP.NET MVC 3 e 4. Visual Studio 2013 è compatibile con MVC 4 e MVC 5.

Per caricare il progetto dovrai modificare il file di progetto. Per fare ciò, fai clic con il pulsante destro del mouse sul progetto scaricato e seleziona Modifica. Che aprirà il file di progetto come file di testo XML. Trova il ProjectTypeGuidsnodo che dovrebbe assomigliare a questo:

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

Rimuovere la Guida del progetto appropriata dall'elenco:

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

Con il GUID appropriato rimosso ProjectTypeGuidsdovrebbe essere simile al seguente:

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

Salvare il file e chiudere l'editor dei file di progetto di Visual Studio. Fare clic con il tasto destro del mouse sul progetto e selezionare Ricarica. Se il progetto non viene ricaricato, chiudere e riaprire Visual Studio. Ora dovresti essere in grado di lavorare con il tuo vecchio progetto ASP.NET MVC nella nuova versione di Visual Studio.

Una cosa importante da notare è che dopo queste modifiche Visual Studio non è a conoscenza del fatto che si tratta di un progetto ASP.NET MVC; quindi le funzionalità specifiche del progetto come "Aggiungi controller, Visualizza ecc." non sarà presente nei menu.


11
Questo funziona anche per MVC 1. Non sono stato in grado di ricaricare dopo aver modificato il file di progetto. Ho dovuto chiudere e riaprire Visual Studio e poi è stato in grado di caricare il progetto MVC 1. Grazie! +1
bytebender il

1
eccellente! funziona per me con una piccola aggiunta ... nel mio .cspproj ho avuto un ulteriore projectTypeGuid: {F85E285D-A4E0-4152-9332-AB1D724D3325}; che doveva essere rimosso.
Kevin Won,

2
@JookyDFW il problema con l'utilità di migrazione è che si tratta di un'utilità di migrazione . Per motivi non elencati nella domanda per questo particolare progetto non ho potuto eseguire l'aggiornamento da MVC 2. Anche se il progetto non può essere aggiornato, ho comunque bisogno di lavorarci su. Modificare il file di progetto come indicato è il modo migliore (unico?) Per lavorare con un progetto MVC 2 in VS 2012.
ahsteele

3
@RyanShripat non è stata affatto la mia esperienza. Le versioni precedenti di ASP.NET MVC devono essere installate ma VS 2010 non ha alcun effetto su quanto sopra.
ahsteele,

2
@Nanu grazie per il commento, per essere chiaro che è quello che intendevo dire: " Una cosa importante da notare è che dopo queste modifiche Visual Studio non è consapevole che si tratta di un progetto ASP.NET MVC, quindi le caratteristiche specifiche del progetto come "Aggiungi controller, Visualizza ecc." non sarà presente nei menu. "
ahsteele

4

Ho usato l'approccio di @ ahsteele (grazie e 2x + 1s!), Ma ho riscontrato un ulteriore errore: -

.csproj: errore: impossibile completare l'operazione. Stringa di classe non valida

Non riesco a trovare citazioni per la vera causa di ciò, ma sono stato in grado di ottenere VS2012RTM per caricare correttamente il progetto modificando il <ProjectGuid>. (Non ho idea di come sia successo - parte di una grande soluzione e la sua VS08, VS10, VS11 Beta e VS2012RC hanno tutti migliorato la .csproje .slnnel corso del tempo.


1

In VS2017 la soluzione è renderla <ProjectTypeGuids></ProjectTypeGuids>così.

Nessuno spazio tra signore e signori, altrimenti perderà 48 ore del tuo tempo.

Saluti

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.