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 に答える