代码之家  ›  专栏  ›  技术社区  ›  Noel Kennedy

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

  •  15
  • Noel Kennedy  · 技术社区  · 14 年前

    如果某个属性是某个值,我想更改它的值。在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 回复  |  直到 14 年前
        1
  •  20
  •   Julien Hoarau    14 年前

    你可以用 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 :

    choose、when和others元素一起使用,提供了一种从许多可能的替代项中选择要执行的一段代码的方法。

    choose元素可以用作项目的子元素,when和others元素。

    在代码示例中,使用 什么时候? 没有 选择 在目标范围内,这是不可能的。

        2
  •  3
  •   stijn    14 年前

    如果BranchName的值等于“Notallowed”,则将其设置为字符串“CorrectedValue”:

    <PropertyGroup>
       <BranchName Condition="'$(BranchName)'=='NotAllowed'">CorrectedValue</BranchName>
    </PropertyGroup>