私は、約 350 の csharp プロジェクトで構成される、かなり大きなソフトウェアのビルドを維持しています。デバッグ ビルドのビルド時間は約 17 分です。
ビルド時間を改善する方法を検討してきましたが、BuildInParallel プロパティは興味深いものでした。特に、クアッドコア サーバーでビルドを行っているため、コンピューティング パワーを実際に活用できるはずです。
しかし悲しいかな...プロパティを設定し、ビルドエージェントの構成ファイルを変更して再起動した後、最初の実行は、失敗するまで、通常よりもはるかに高速で、本当に有望に見えました.
ビルド ログを確認した後、CopyLocal=true としてマークされた参照を出力ディレクトリにコピーしようとすると、ビルドが失敗したように見えます。C# プロジェクト A と C# プロジェクト B が並行してビルドされ、両方が同じサードパーティ dll を参照し、同時にコピーしようとすると、ファイルをコピーしようとする 2 番目のプロセスでファイル アクセス違反が発生します -ファイルは別のプロセスによって使用されています。
誰かがこれを経験し、マルチプロセス ビルドをチーム ビルドで動作させることができましたか?
これは失敗の 1 つです。他のどのプロジェクトが同時に構築されていたのかを把握するのは困難です。
関連のないものはすべて削除しました。
54>プロジェクト「d:\temp\PCM\1.3-Maint_CI\Sources\Modules\Core\」のファイル「c:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets」のターゲット「_CopyFilesMarkedCopyLocal」 Test\UnitTest\TestDIPS.Core.Data.Server.NUnit\TestDIPS.Core.Data.Server.NUnit.csproj": 54>Task "Copy" Copying file from "..........\Bin\ 3rdParty\Oracle\Oracle.DataAccess.dll」を「d:\temp\PCM\1.3-Maint_CI\Binaries\Debug\Oracle.DataAccess.dll」に。コマンド: copy /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): エラー MSB3021: ファイルをコピーできません ".....\Bin\サードパーティ\Oracle\Oracle.DataAccess.dll" 「d:\temp\PCM\1.3-Maint_CI\Binaries\Debug\Oracle.DataAccess.dll」に。別のプロセスで使用されているため、プロセスはファイル 'd:\temp\PCM\1.3-Maint_CI\Binaries\Debug\Oracle.DataAccess.dll' にアクセスできません。タスク「コピー」の実行が完了 -- 失敗。54>プロジェクト「TestDIPS.Core.Data.Server.NUnit.csproj」でターゲット「_CopyFilesMarkedCopyLocal」のビルドを完了 -- 失敗。