從PowerShell中命令行的MSBuild多DefineConstants
Set-Alias msbuild C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe
,並從同一目錄中運行我的SLN文件
> msbuild /nologo /property:DefineConstants=FOO
的作品就好了。假設我需要兩個編譯時間常量。
> msbuild /nologo /property:DefineConstants=FOO;BAR
Powershell的解釋分號作爲末端陳述的和具有單個恆定運行,然後嘗試運行命令BAR
和錯誤。所以不是我想要的。
怎麼樣?
> msbuild /nologo /property:DefineConstants="FOO;BAR"
MSBUILD : error MSB1006: Property is not valid.
Switch: BAR
這也行不通。不知道這裏發生了什麼,但它似乎將「FOO; BAR」解釋爲某種單一的東西 - 而不是兩個常量。
所以。我如何實際傳遞多個常量?
編輯 經進一步調查,我跑在cmd.exe的
>C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe /nologo /property:DefineConstants=FOO;BAR
MSBUILD : error MSB1006: Property is not valid.
Switch: BAR
以下雖然這工作
>C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe /nologo /property:DefineConstants="FOO;BAR"
感謝邁克!第一個選項奏效。 –
應該注意的是,雖然這適用於「DefineConstants」屬性,但它會針對路徑中包含空格的路徑進行分解。所以在這種情況下不要使用這個技巧。 –
@GeorgeMauer命令行工具的字符串轉義是PowerShell難以使用的領域之一。我注意到,第二個選項在4.0版本上適用於我,但不是3.0版本。 –