Visual Studio e le varie tipologi di progetti.

In quest’ultimo periodo sto lavorando parecchio su Dexter e sto migrando parte del codice all’ultima release di ASP.NET MVC. Tra le varie branch, merge, update, etc, mi è capitato che il progetto web non fosse più “riconosciuto” da Visual Studio come un progetto MVC, con la scomoda conseguenza che i menù contestuali non mi offrivano più le funzioni di AddView, AddArea, etc.

Nulla di grave, ma avere la possibilità di aggiungere una View direttamente dal controller nell’esatta cartella (il tutto con un solo click) è piuttosto comodo.
Ovviamente il problema era sicuramente nel file .csproj, si trattava solo di capire cosa mancava per riattivare gli “aiuti” di Visual Studio per MVC.
Per comprendere cosa andare a toccare all’interno del file di progetto, ne ho creato uno nuovo da VS e sono andato a correggere a mano il file .csproj

A questo punto è entrato in gioco WinMerge, con cui sono andato a confrontare i due file e mi sono accorto che un nodo dell’xml è diverso tra i due. Nello specifico si trattava del nodo <ProjectTypeGuids> che contiene una serie di guid separati dalla virgola che hanno lo scopo di descrivere a Visual Studio la tipologia, il liguanggio e l’output del progetto.
Trattandosi la mia applicazione di un WAP (Web Application Project) fatto con ASP.NET MVC 3 e scritto in C#, il contenuto di questo tag deve essere così:

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

Per sapere il significato di ogni GUID riporto qui una tabella che ho creato dopo un po’ di ricerche in rete:

Windows (C#) {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
Windows (VB.NET) {F184B08F-C81C-45F6-A57F-5ABD9991F28F}
Windows (Visual C++) {8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}
Web Application {349C5851-65DF-11DA-9384-00065B846F21}
Web Site {E24C65DC-7377-472B-9ABA-BC803B73C61A}
ASP.NET MVC 3 {E53F8FEA-EAE0-44A6-8774-FFD645390401}
WCF {3D9AD99F-2412-4246-B90B-4EAA41C64699}
WPF {60DC8134-EBA5-43B8-BCC9-BB4BC16C2548}
XNA (Windows) {6D335F3A-9D43-41b4-9D22-F6F17C4BE596}
XNA (XBox) {2DF5C3F4-5A5F-47a9-8E94-23B4456F55E2}
XNA (Zune) {D399B71A-8929-442a-A9AC-8BEC78BB2433}
Silverlight {A1591282-1198-4647-A2B1-27E5FF5F6F3B}

Come potete vedere la parte riguardante MVC è {E53F8FEA-EAE0-44A6-8774-FFD645390401}: una volta reinserito questo GUID all’interno del mio file .csproj tutto è tornato a funzionare per il meglio.

Ciauz


Comments