2013-01-16 22 views
5

Sto scrivendo uno strumento che ispeziona il mio albero dei sorgenti alla ricerca di progetti .vcproj e .csproj (VS2005). Voglio sapere se ogni progetto è un'applicazione, una DLL o un progetto di libica statica.Come sapere se un file di progetto di Visual Studio rappresenta un'applicazione, una DLL o un progetto di libreria statica?

Per C#, penso che questa domanda abbia una risposta (How do you tell the Visual Studio project type from an existing Visual Studio project) ma non riesco a trovare un parallelo ovvio nei progetti C++. Preferisco qualcosa che posso usare come termine di ricerca semplice nel testo, se possibile.

+0

Nel 2012 si tratta di ' Application', in '' PropertyGroup' con etichetta = "Configurazione" '. Nota che potrebbe cambiare a seconda della configurazione del progetto selezionata, quindi devi essere in grado di sceglierne uno appropriato. –

+2

Sono abbastanza sicuro che hanno cambiato le cose un bel po 'nel 2010 per C++ –

+0

di ricontrollare qualsiasi soluzione che si utilizza, è possibile verificare un determinato tipo di progetto facendo clic destro del progetto, selezionando 'Properties'->' Configurazione Properties'- > 'Generale'->' Tipo di configurazione' (sotto "Impostazioni predefinite progetto.) – bunkerdive

risposta

5

Avrai bisogno di analizzare l'attributo "ConfigurationType" nel file .vcproj. Un attributo dell'elemento <VisualStudioProject><Configurations><Configuration>. È "2" per un progetto DLL, "4" per un progetto di libreria statica. Fai attenzione che diverse configurazioni possono avere valori diversi per questo attributo, anche se questo sarà molto insolito.

In generale si esegue il reverse-engineering di queste cose effettuando una copia del file .vcproj, apportando una modifica alle pagine Project + Property, utilizzando File + SaveAll e quindi confrontando i due file .vcproj per vedere cosa è cambiato.

Fate attenzione un po 'per mettere un sacco di fatica in una vecchia versione di Visual Studio tale. Otto anni sono un periodo molto lungo nell'ingegneria del software, specialmente dopo che è stato rilasciato lo standard C++ 11. Il formato del file di progetto C++ è cambiato radicalmente in VS2010, ora un file .vcxproj che si è unito al resto delle lingue in VS supportando build tramite MSBuild. Si è costretti a dover ripetere tutto questo quando si aggiorna la versione VS un giorno. Ora è meglio farlo poiché sicuramente non sarà più semplice farlo in seguito, quando sei arrivato a dipendere dal tuo strumento.

+0

L'aggiornamento è guidato da fattori esterni, quindi in questo caso va bene aggiungere" aggiorna questa piccola utility "alla lista _long_ di test quando un giorno ci spostiamo fino al 2010 o oltre :) –

+0

ConfigurationType = "1" è per applicazione o progetto exe. – Nathan