MSBuild属性和变量重载

Arn*_*hor 1 msbuild overloading build-script

假设我启动一个构建脚本,定义名为SampleScript,指定参数/p:MyPrefix=Custom.脚本中有以下代码:

<PropertyGroup Condition="$(BuildDefinitionName)=='SampleScript'">
    <MyPrefix>Default</MyPrefix>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

我得到的,首先将MyPrefix设置为"Custom",然后将其重载为"Default"(我是对的吗?).如果是这样,有没有办法让用户指定的参数更优先,所以它没有超载?

Bri*_*ler 5

您只能通过动态更改目标内的值来重载命令行上指定的属性...

<Project ...>
   <PropertyGroup>
      <Value>FromStaticProperty</Value>
   </PropertyGroup>

   <Target Name="PropertyPrecedence">
      <Message Text="Value = '$(Value)'" />
      <PropertyGroup>
         <Value>FromDynamicProperty</Value>
      </PropertyGroup>
      <Message Text="Value = '$(Value)'" />
   </Target>
</Project>

> msbuild /p:Value=FromCommandLine
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,给定从命令行提供的值,将忽略"FromStaticProperty",但将使用"FromDynamicProperty".

摘自MSBuild Trickery技巧#27