我正在尝试将属性传递给MSBuild。该属性是以分号分隔的值列表。与this question不同,我正在从PowerShell运行MSBuild。
我明白了:
PS> msbuild .\Foo.sln /p:PackageSources="\\server\NuGet;E:\NuGet"
MSBUILD : error MSB1006: Property is not valid.
Switch: E:\NuGet
如果我从命令提示符运行相同的命令,它可以正常工作。如何让它在PowerShell中运行?
答案 0 :(得分:18)
用单引号包装参数:
... '/p:PackageSources="\\Server\NuGet;E:\NuGet"'
在PowerShell v3上试试这个:
msbuild .\Foo.sln --% /p:PackageSources="\\Server\NuGet;E:\NuGet"
答案 1 :(得分:1)
同样使用ascii值可能会有所帮助:
msbuild。\ Foo.sln / p:PackageSources =" \ Server \ NuGet%3BE:\ NuGet"
答案 2 :(得分:-1)
VBScript 函数可用于转义在双引号内传递给 MSBuild.exe 的属性值:
self.treetext.openPersistentEditor(item_1, 0)
以下示例演示了 Escape()函数
的用法 Function Escape(s)
Escape = s
Set objRegEx = CreateObject("VBScript.RegExp")
objRegEx.Global = True
objRegEx.Pattern = "(\\+)?"""
Escape = objRegEx.Replace(Escape,"$1$1\""")
objRegEx.Pattern = "(\\+)$"
Escape = objRegEx.Replace(Escape,"$1$1")
End Function