1

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

<PropertyGroup Condition="$(BuildDefinitionName)=='SampleScript'">
    <MyPrefix>Default</MyPrefix>
</PropertyGroup>

据我所知,首先 MyPrefix 设置为“自定义”,然后将其重载为“默认”(对吗?)。如果是这样,有没有办法让用户指定的参数更优先,所以它不会重载?

4

1 回答 1

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

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

摘自MSBuild Trickery技巧 #27

于 2012-02-13T16:33:53.370 回答