Condividi tramite


Utilizzo di più processori per la compilazione di progetti

MSBuild è in grado di trarre vantaggio dai sistemi che dispongono di più processori o di processori multi-core. Per ogni processore disponibile viene creato un processo di compilazione separato. Ad esempio, se il sistema presenta quattro processori, vengono creati quattro processi di compilazione. MSBuild può elaborare queste compilazioni simultaneamente e pertanto il tempo di compilazione globale risulta ridotto. Tuttavia, la compilazione parallela introduce alcune modifiche ai processi di compilazione. In questo argomento vengono descritte tali modifiche.

Riferimenti da progetto a progetto

Quando il Microsoft Build Engine rileva un riferimento da progetto a progetto (P2P) durante l'utilizzo di processi paralleli di compilazione di progetti, il riferimento viene compilato solo una volta. Se due progetti presentano lo stesso riferimento P2P, questo non viene ricompilato per ogni progetto. Invece, il motore di compilazione restituisce lo stesso riferimento P2P a entrambi i progetti dipendenti. Richieste successive nella sessione per la stessa destinazione offrono lo stesso riferimento P2P.

Rilevamento del ciclo

Il rilevamento del ciclo funziona esattamente come in MSBuild 2.0, ma ora MSBuild è in grado di riportare il rilevamento del ciclo durante la compilazione o in un momento diverso.

Errori ed eccezioni durante le compilazioni parallele

Nel corso delle compilazioni parallele possono verificarsi errori ed eccezioni in momenti diversi rispetto a quanto avviene nelle compilazioni non parallele e, quando un progetto non viene compilato, gli altri processi di compilazione di progetti procedono. MSBuild non interromperà alcuna compilazione di progetti eseguita in parallelo con quella che ha avuto esito negativo. La compilazione degli altri progetti continua finché non viene eseguita correttamente o non si verifica un errore. Comunque, se ContinueOnError è stato attivato, nessuna compilazione verrà arrestata anche se si verifica un errore.

File Visual C++ di progetto (vcproj) e soluzione (sln)

Entrambi i file di progetto Visual C++ (vcproj) e di soluzione (sln), possono essere passati a Attività MSBuild. Per i progetti Visual C++, viene chiamato VCWrapperProject, quindi viene creato il progetto MSBuild interno. Per le soluzioni Visual C++, viene creato SolutionWrapperProject , quindi il progetto MSBuild interno. In entrambi casi, il progetto risultante viene equiparato a qualsiasi altro progetto MSBuild.

Esecuzione di più processi

Quasi tutte le attività correlate alla compilazione richiedono che la directory corrente rimanga costante in tutto il processo di compilazione per evitare errori di percorso. Pertanto, non è possibile eseguire progetti su thread diversi in MSBuild perché verrebbero create più directory.

Per evitare questo comportamento, ma consentire al tempo stesso la compilazione a più processori, MSBuild utilizza l'"isolamento del processo". Utilizzando l'isolamento del processo, MSBuild è in grado di creare un massimo di n processi, dove n è uguale al numero di processori disponibili nel sistema. Ad esempio, se MSBuild compila una soluzione in un sistema che dispone di due processori, vengono creati solo due processi di compilazione. Questi processi vengono utilizzati nuovamente per compilare tutti i progetti nella soluzione.

Vedere anche

Concetti

Compilazione di più progetti in parallelo con MSBuild

Attività di MSBuild