Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
MSBuild può sfruttare appieno i sistemi con più processori o processori a più core creando un processo di compilazione separato per ogni processore. Ad esempio, se un sistema ha quattro processori, MSBuild crea quattro processi di compilazione.
MSBuild può elaborare più compilazioni contemporaneamente, riducendo così il tempo di compilazione complessivo. Tuttavia, le compilazioni parallele possono introdurre modifiche nel modo in cui si verificano i processi di compilazione.
Questo articolo descrive le modifiche al processo che possono verificarsi quando più compilazioni vengono eseguite contemporaneamente.
Riferimenti da progetto a progetto
Quando il motore di compilazione Microsoft rileva un riferimento al progetto (ProjectReference
elemento) durante le compilazioni parallele per un progetto, compila il riferimento una sola volta. Se due progetti hanno lo stesso riferimento, il riferimento non viene ricostruito per ciascun progetto. Il motore di compilazione restituisce invece lo stesso riferimento al progetto a entrambi i progetti che hanno la dipendenza. MSBuild fornisce inoltre lo stesso progetto di riferimento alle richieste future nella sessione per lo stesso obiettivo.
Rilevamento del ciclo
Il rilevamento del ciclo durante le compilazioni parallele è lo stesso comportamento di MSBuild 2.0. La differenza è che la versione più recente di MSBuild può segnalare il rilevamento del ciclo in un momento diverso o nella compilazione.
Errori ed eccezioni durante le compilazioni parallele
Durante le compilazioni parallele, gli errori e le eccezioni possono verificarsi in momenti diversi rispetto a quelli eseguiti durante una compilazione nonparallele. Inoltre, se un progetto non viene compilato, le altre compilazioni del progetto continuano.
MSBuild non arresta la compilazione di progetti in parallelo con una compilazione non riuscita. Altri progetti continuano a progredire fino a quando non riescono o falliscono. Quando l'impostazione ContinueOnError è abilitata, non viene interrotta alcuna compilazione, anche se si verifica un errore.
File di progetto C++ (.vcxproj) e soluzione (.sln)
Entrambi i file di progetto C++ (.vcxproj) e soluzione (.sln) possono essere passati all'attività MSBuild.
- Progetti C++: viene chiamata l'API VCWrapperProject e quindi viene creato il progetto MSBuild interno.
- Soluzioni C++: viene creata un'istanza solutionWrapperProject e quindi viene creato il progetto MSBuild interno.
In entrambi i casi, il progetto risultante viene gestito come qualsiasi altro progetto MSBuild.
Esecuzione di più processi
Quasi tutte le attività correlate alla compilazione richiedono che la directory corrente rimanga costante durante il processo di compilazione per evitare errori correlati al percorso. I progetti non possono essere eseguiti in thread diversi in MSBuild perché possono causare la creazione di più directory.
Per evitare questo problema ma abilitare ancora compilazioni multiprocessore, MSBuild usa l'isolamento dei processi. Questo processo ha abilitato MSBuild per creare un massimo di n
processi, in cui n
corrisponde al numero di processori disponibili nel sistema. Ad esempio, se MSBuild compila una soluzione in un sistema con due processori, vengono creati solo due processi di compilazione. Questi processi vengono riutilizzati per compilare tutti i progetti nella soluzione.