Ora, dopo aver detto questo, una testata dell'elica verrà a contraddistinguermi, ma non c'è modo di fare ciò che si vuole fare da Visual Studio. C'è un modo di farlo al di fuori di VS, ma prima, ho una domanda:
Perché mai vuoi farlo? Forse stai cercando di salvare i cicli della CPU, o di risparmiare tempo, ma se fai ciò che stai suggerendo ti troverai all'improvviso in una posizione meravigliosa per spararti ai piedi. Se si dispone di una libreria 1 che dipende dalla libreria 2 e solo le modifiche della libreria 2, si potrebbe pensare di essere in grado di costruire solo la libreria modificata, ma uno di questi giorni si apporterà una modifica alla libreria 2 che si interromperà libreria 1, e senza una build di libreria 2 non la troverai nella compilation. Quindi, a mio modesto parere, NON FARLO.
Il motivo per cui questo non funziona in VS2005 e 2008 è perché VS utilizza MSBuild. MSBuild viene eseguito contro i file di progetto e esaminerà i riferimenti del progetto e creerà prima tutti i progetti di riferimento, se la loro origine è stata modificata, prima di creare il progetto di destinazione. Puoi testarlo da solo eseguendo MSBuild dalla riga di comando con un progetto che non è stato modificato ma con un progetto di riferimento che è stato modificato. Esempio:
msbuild ClassLibrary4.csproj
dove ClassLibrary4 non è cambiato, ma fa riferimento ClassLibrary5, che ha cambiato. MSBuild costruirà prima lib 5, prima che ne crei 4, anche se non hai menzionato 5.
L'unico modo per aggirare tutte queste failfe è utilizzare direttamente il compilatore invece di passare attraverso MSBuild. Brutto, brutto, ma questo è tutto. Fondamentalmente sarai ridotto a reimplementare MSBuild in qualche modo per fare ciò che vuoi fare.
Non ne vale la pena.
È questo mentre si sta attivamente sviluppando e il debugging o come parte di uno script di build? Per il primo, questo è possibile con le giuste impostazioni. Per il secondo, non è facilmente fattibile. – jeremcc
Questo mentre sto sviluppando/debug attivamente. –
Se "Build Solution", crea tutti i progetti o solo quelli che sono stati modificati (o una dipendenza è stata)? –