Mantengo la creazione di un software abbastanza grande, costituito da circa 350 progetti csharp. Il nostro tempo di compilazione per un debug costruito orologi in circa 17 minuti.MSBuild & TeamBuild - Errore BuildInParallel a causa della violazione dei permessi del file MSB3021
Ho cercato modi per migliorare i tempi di costruzione e la proprietà BuildInParallel sembrava interessante. Soprattutto perché abbiamo un server quad-core che fa le nostre build, dovrebbe essere davvero in grado di sfruttare la potenza di calcolo.
Ma ahimè ... Dopo aver impostato la proprietà, modificato il file di configurazione per l'agente di build e riavviarlo, la prima esecuzione sembrava davvero promettente, molto più veloce del normale, fino al punto in cui non era riuscita.
Dopo aver esaminato i log di build, sembra che la compilazione non riesca quando tenta di copiare i riferimenti contrassegnati come CopyLocal = true nella directory ouput. Se il progetto C# A e il progetto C# sono costruiti in parallelo e entrambi fanno riferimento alla stessa DLL di terze parti e tenta di copiarlo nello stesso momento, il secondo processo per tentare di copiare il file otterrà una violazione di accesso al file - il file è utilizzato da un altro processo.
Chiunque ha provato questo ed è stato in grado di ottenere build multi-proc lavorando su Team Build?
Ecco uno dei fallimenti, un po 'difficile da capire quale altro progetto è stato costruito allo stesso tempo.
Ho rimosso tutto il materiale non rilevante:
54> Target "_CopyFilesMarkedCopyLocal" nel file "C: \ WINDOWS \ Microsoft.NET \ Framework \ v3.5 \ Microsoft.Common.targets " dal progetto " d: \ temp \ PCM \ 1.3-Maint_CI \ Sources \ Modules \ Core \ Test \ UnitTest \ TestDIPS.Core.Data.Server.NUnit \ TestDIPS.Core.Data.Server.NUnit.csproj ": 54> Attività "Copia" Copia di file da ".......... \ Bin \ 3rdParty \ Oracle \ Oracle.DataAccess.dll" a "d: \ temp \ PCM \ 1.3-Maint_CI \ Binaries \ Debug \ Oracle.DataAccess.dll". Comando: copia/y ".......... \ Bin \ 3rdParty \ Oracle \ Oracle.DataAccess.dll" "d: \ temp \ PCM \ 1.3-Maint_CI \ Binaries \ Debug \ Oracle. DataAccess.dll " 54> c: \ WINDOWS \ Microsoft.NET \ Framework \ v3.5 \ Microsoft.Common.targets (2703,9): errore MSB3021: Impossibile copiare il file " ....... ... \ Bin \ 3rdParty \ Oracle \ Oracle.DataAccess.dll "a " d: \ temp \ PCM \ 1.3-Maint_CI \ Binaries \ Debug \ Oracle.DataAccess.dll ". Il processo non può accedere al file 'd: \ temp \ PCM \ 1.3-Maint_CI \ Binaries \ Debug \ Oracle.DataAccess.dll' perché è utilizzato da un altro processo. Compito eseguito "Copia" - NON RIUSCITO. 54> Fine edificio target "_CopyFilesMarkedCopyLocal" nel progetto "TestDIPS.Core.Data.Server.NUnit.csproj" - FAILED.
Ci scusiamo per la risposta tardiva, ma grazie mille per la risposta chiarificatrice. La tua risposta è in linea con le mie ultime scoperte, ho avuto problemi con i test di accesso. Ho scoperto che avrei dovuto bandire i metodi di verifica o modificare il file dei target, che è qualcosa che non vogliamo fare. Si spera che venga risolto in Team Build 2010/.Net 4.0 –