Geo*_*uer 2 msbuild syntax powershell batch-file
来自powershell
Set-Alias msbuild C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe
Run Code Online (Sandbox Code Playgroud)
并从与我的sln文件相同的目录运行
> msbuild /nologo /property:DefineConstants=FOO
Run Code Online (Sandbox Code Playgroud)
工作得很好.假设我需要两个构建时间常量.
> msbuild /nologo /property:DefineConstants=FOO;BAR
Run Code Online (Sandbox Code Playgroud)
Powershell将分号解释为语句结束并使用单个常量运行,然后尝试运行命令BAR和错误.所以不是我想要的.
怎么样?
> msbuild /nologo /property:DefineConstants="FOO;BAR"
MSBUILD : error MSB1006: Property is not valid.
Switch: BAR
Run Code Online (Sandbox Code Playgroud)
这也不起作用.不知道这里发生了什么,但它似乎将"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
Run Code Online (Sandbox Code Playgroud)
虽然这有效
>C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe /nologo /property:DefineConstants="FOO;BAR"
Run Code Online (Sandbox Code Playgroud)
两个想法:
在属性标志周围添加引号并转义双引号
msbuild /nologo "/property:DefineConstants=`"FOO;BAR`""
Run Code Online (Sandbox Code Playgroud)
使用呼叫操作员&(适用于PS v4 +)
& msbuild /nologo /property:DefineConstants="FOO;BAR"
Run Code Online (Sandbox Code Playgroud)
小智 5
我们可以使用msbuild转义字符作为msbuild/t:rebuild"/ property:DefineConstants = PROD%3BCODE_ANALYSIS".使用%3B的地方; 在属性中.
https://msdn.microsoft.com/en-us/library/bb383819.aspx
https://msdn.microsoft.com/en-us/library/ms228186.aspx
| 归档时间: |
|
| 查看次数: |
2966 次 |
| 最近记录: |