Свойство MSBuild и перегрузка переменных - PullRequest
1 голос
/ 13 февраля 2012

Допустим, я запускаю скрипт сборки, определение с именем SampleScript, указывающее параметр /p:MyPrefix=Custom.В скрипте есть следующий код:

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

Как я понял, сначала MyPrefix устанавливается на «Custom», затем перегружается на «Default» (я прав?).Если да, есть ли способ сделать пользовательский параметр более приоритетным, чтобы он не был перегружен?

1 Ответ

5 голосов
/ 13 февраля 2012

Перегрузить свойство, указанное в командной строке, можно только путем динамического изменения значения внутри цели ...

<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

...