如何根据msbuild中的条件更改属性的值?

Noe*_*edy 15 msbuild

如果属性是某个值,我想更改属性的值.在C#中我会写:

if(x=="NotAllowed")
  x="CorrectedValue;
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止,请不要笑:

 <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>
Run Code Online (Sandbox Code Playgroud)

Jul*_*rau 20

你可以使用Conditionon 来做到这一点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>
Run Code Online (Sandbox Code Playgroud)

信息WhenChoose:

Choose,When和otherwise元素一起使用,以提供一种方法来选择一段代码来执行许多可能的替代方案.

选择元素可以用作Project,When和otherwise元素的子元素.

在您的代码示例中,您在目标中使用When而不Choose在目标内,这是不可能的.