Как изменить значение свойства на основе условия в msbuild? - PullRequest
15 голосов
/ 15 июня 2010

Я хотел бы изменить значение свойства, если оно является определенным значением. В C # я бы написал:

if(x=="NotAllowed")
  x="CorrectedValue;

Это то, что у меня есть, пожалуйста, не смейтесь:

 <PropertyGroup>
    <BranchName>BranchNameNotSet</BranchName>
  </PropertyGroup>

///Other targets set BranchName

 <Target Name="CheckPropertiesHaveBeenSet">
    <Error Condition="$(BranchName)==BranchNameNotSet" Text="Something has gone wrong.. branch name not entered"/>
      <When Condition="$(BranchName)==master">
        <PropertyGroup>
          <BranchName>MasterBranch</BranchName>
        </PropertyGroup>
      </When>
  </Target>

Ответы [ 2 ]

20 голосов
/ 15 июня 2010

Вы можете сделать это, используя Condition на Property:

<PropertyGroup>
  <BranchName>BranchNameNotSet</BranchName>
</PropertyGroup>

<Target Name="CheckPropertiesHaveBeenSet">
  <!-- If BranchName equals 'BranchNameNotSet' stop the build with error-->
  <Error Condition="'$(BranchName)'=='BranchNameNotSet'" Text="Something has gone wrong.. branch name not entered"/>

  <PropertyGroup>
    <!-- Change BranchName value if BranchName equals 'master' -->
    <BranchName Condition="'$(BranchName)'=='master'">MasterBranch</BranchName>
  </PropertyGroup>

</Target>

Информация о When и Choose:

Элементы «Выбрать», «Когда» и «В противном случае» используются вместе, чтобы обеспечить способ выбора одной секции кода для выполнения из ряда возможных альтернатив.

Выбранные элементы могут использоваться в качестве дочерних элементов элементов Project, When и Otherwise.

В вашем примере кода вы используете When без Choose и в пределах цели, что невозможно.

3 голосов
/ 15 июня 2010

это устанавливает BranchName в строку 'CorrectedValue', если его значение равно 'NotAllowed':

<PropertyGroup>
   <BranchName Condition="'$(BranchName)'=='NotAllowed'">CorrectedValue</BranchName>
</PropertyGroup>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...