从PowerShell运行时,如何在MSBuild命令行上传递包含分号的属性值?

Rog*_*mbe 11 msbuild powershell

我正在尝试将属性传递给MSBuild.该属性是以分号分隔的值列表.与此问题不同,我正在从PowerShell运行MSBuild.

我明白了:

PS> msbuild .\Foo.sln /p:PackageSources="\\server\NuGet;E:\NuGet"

MSBUILD : error MSB1006: Property is not valid.
Switch: E:\NuGet
Run Code Online (Sandbox Code Playgroud)

如果我从命令提示符运行相同的命令,它工作正常.如何让它在PowerShell中工作?

Kei*_*ill 19

用单引号包装参数:

... '/p:PackageSources="\\Server\NuGet;E:\NuGet"'
Run Code Online (Sandbox Code Playgroud)

在PowerShell v3上试试这个:

msbuild .\Foo.sln --% /p:PackageSources="\\Server\NuGet;E:\NuGet"
Run Code Online (Sandbox Code Playgroud)


小智 6

使用 ASCIII 值也有帮助:

msbuild .\Foo.sln /p:PackageSources="\\Server\NuGet%3BE:\NuGet"
Run Code Online (Sandbox Code Playgroud)

  • 当然。在这种情况下,您不需要更改脚本,这只是不同之处。这实际上是我的问题 - 我正在使用触发构建的分发插件。由于我不被允许接触插件的代码,所以这更合适地解决了这个问题。 (3认同)