2016-03-31 2 views
1

У меня есть этот Powershell скриптКак предотвратить слияние свойств powershell msbuild?

$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 не слияния свойства?

ответ

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 
Смежные вопросы