Win2012R2 で MSBuild を実行するために PowerShell v4.0 Start-Process を使用しています。通常、私のソリューションのビルド時間は 1 分ですが、ビルド サーバーでは 16 分です。MSBuild は、すべてのノードを閉じて最終的に終了するのに 15 分かかります ("Finished!!!" を出力するのに 16 分)。
PowerShell コード:
$process = Start-Process -FilePath $fileName -ArgumentList $arguments
-WorkingDirectory $workingDir -NoNewWindow -PassThru -Wait
Write-Host "Finished!!!"
$exitCode = $process.ExitCode
MSBuild 引数:
$commandLine = "/nologo /p:Configuration=Release;Platform=x64 /maxcpucount:2"
+ " "+ $dir + "MySolution.sln"
/nodeReuse:falseを MSBuild コマンド ラインに追加すると、ビルド時間は通常 (1 分) に戻ります。
作業コードは次のとおりです。
function PsStartProcess([string]$fileName, [array]$arguments, [string]$workingDir)
{
if (!$workingDir)
{
$workingDir = [System.IO.Directory]::GetCurrentDirectory()
}
$process = Start-Process -FilePath $fileName -ArgumentList $arguments -WorkingDirectory $workingDir -NoNewWindow -PassThru -Wait
Write-Host "Finished!!!"
$exitCode = $process.ExitCode
$process.Close()
return $exitCode
}
$exeFileName = "c:\Program Files (x86)\MSBuild\12.0\Bin\MSBuild.exe"
$commandLine = "/nologo /p:Configuration=Release;Platform=x64 /maxcpucount:2 /nodeReuse:false" + " "+ $dir + "MySolution.sln"
PsStartProcess $exeFileName $commandLine $binDir