Acabo de probar esto en PowerShell v1.0. La configuración es la siguiente:¿Cómo invocar MSBuild desde PowerShell usando & operator?
Id CommandLine
-- -----------
1 $msbuild = "C:\Windows\Microsoft.NET\Framework\v3.5\msbuild.exe"
4 $a = "C:\some\project\or\other\src\Solution.sln /target:Clean /target:Build"
.
Esta línea de falla con un mensaje de error poco intuitivo:
Id CommandLine
-- -----------
5 & $msbuild $a
.
Esta línea falla porque & espera que el primer argumento sea el comando en sí.
Id CommandLine
-- -----------
10 & "$msbuild $a"
.
Esta línea funciona:
Id CommandLine
-- -----------
16 cmd /c "$msbuild $a"
.
Explique. Estoy más interesado en por qué la sintaxis & no funciona, que una solución específica de MSBuild.
Sugiero usar un cmdlet auxiliar como ['Invoke-MSBuild'] (http://sedodream.com/2014/07/19/IntroducingPSBuildAnImprovedInterfaceForMsbuildexeInPowerShell.aspx) en lugar de llamar a MSBuild directamente. – orad