Share via


Utilizzo di più processori per la compilazione di progetti

Aggiornamento: novembre 2007

Visual Studio 2008 è in grado di trarre vantaggio dai sistemi che dispongono di più processori o di più componenti principali. 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 simultaneamente queste compilazioni, pertanto il tempo di compilazione complessivo è ridotto. Tuttavia, la compilazione parallela introduce alcune modifiche nel modo in cui si verificano i 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. In MSBuild la compilazione di progetti in parallelo non viene interrotta a causa di una compilazione non riuscita. La compilazione degli altri progetti continua indipendentemente dall'esito. 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

Attività di MSBuild

Altre risorse

Compilazione per una versione specifica di .NET Framework