如何防止PowerShell合并msbuild属性?

时间:2016-03-31 08:56:54

标签: powershell msbuild

我有这个powershell脚本

$msbuildSettings="/p:Configuration=Release /p:VisualStudioVersion=12.0";
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe ..\Sol.sln /t:"Clean;Admin" $msbuildSettings

导致此错误

The specified solution configuration "Release /p:VisualStudioVersion=12.0|Mixed Platforms" is invalid.

Msbuild认为

/p:Configuration=Release /p:VisualStudioVersion=12.0

是一个属性。

如果我不使用变量msbuildsettings,则构建工作,即

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe ..\WeConnectSol.sln /t:"Clean;WeConnectAdmin" /p:Configuration=Release /p:VisualStudioVersion=12.0

如何告诉powershell不要合并属性?

1 个答案:

答案 0 :(得分:2)

首先,我建议您使用Join-Path$env:windir变量来确定msbuild路径:

$msbuild = Join-Path $env:windir 'Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe'

另外,我会使用数组来定义参数:

$parameters = @(
    '..\Sol.sln', 
    '/t:"Clean;Admin"', 
    '/p:Configuration=Release', 
    '/p:VisualStudioVersion=12.0')

最后使用splatting传递参数:

& $msbuild @parameters