mia situazioneCome diminuire i tempi di MSBuild
Nel progetto C# Ora sto lavorando su abbiamo una abbastanza grande soluzione di (80 + progetti). Ora i tempi di ricostruzione di 5 minuti + stanno diventando davvero un problema usando MSBuild da Visual Studio 2008.
In un'analisi ho fatto la scorsa settimana si è scoperto che il mio tempo di costruzione è stato speso nel modo seguente:
Copiare i file dei progetti e ricopiare per i progetti che dipendono da esso (CopyToLocal), ecc . (60%)
Invocazione di un postbuild da decompilare/compilare. (20%)
Fare la compilazione vera e propria, ecc (20%)
A parte i 'normali' del progetto bin\debug
cartelle uscita viene copiato anche ad una directory esterna per impostare il principale ' loader '. La struttura del programma principale è un po 'come questo:
\loader\bin\loader.exe
\loader\plugin\plugin1\plugin1.dll
\loader\plugin\plugin1\somedependency.dll
Quello che ho fatto
Nel tentativo di rendere le cose vanno un po' più veloce ho pensato di quanto segue:
Copy tutti i file in una directory big bin e non utilizzare CopyTolocal. Non mi piace perché non possiamo più utilizzare versioni diverse degli stessi file DLL e la mia directory bin sta diventando un bel pasticcio.
Use parallelism (/m) for MSBuild. Questo aiuta solo pochissimo nei tempi di costruzione.
Provare a ridurre le dipendenze tra i progetti che è sempre una buona cosa, ovviamente.
Investire in hardware. Ho trovato alcuni research on solid-state drives, ma questo non sembra promettente.
La mia domanda
Ho anche notato che quando faccio una modifica a un progetto che è alla radice del mio albero delle dipendenze tutto diventa ricostruire. Anche se il cambiamento era solo nella parte "privata" e l'interfaccia del progetto non è cambiata.
MSBuild utilizza un timestamp di progetti dipendenti per determinare se un progetto richiede una ricostruzione?
Può essere modificato in una condizione diversa? Ad esempio, il checksum del file?
Oltre a questo suggerimento specifico, sicuramente apprezzerei tutti i suggerimenti per velocizzare i tempi di costruzione.
Possibile duplicato di [Miglioramento del tempo di creazione dell'elemento della configurazione (.NET)] (http://stackoverflow.com/questions/8633313/improving-ci-build-time-net) –