2013-07-31 4 views
0

현재 두 개의 차이점 만있는 두 개의 별도의 속성 그룹이 있어야하며 조건에 따라 하나 또는 다른 트리거가 설정됩니다.MSBuild의 속성 그룹 안에 "if"유형 문이 있습니까?

<!--CAME FROM TEAMBUILD--> 
    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' != 'Debug|AnyCPU' AND '$(Configuration)|$(Platform)' != 'Release|AnyCPU' AND '$(BuildingInsideVisualStudio)' != 'true' "> 
    <PreBuildEvent> 
    </PreBuildEvent> 
    <PostBuildEvent> 
     set MAGE="C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\mage.exe" 
     set APPFILE=$(TargetDir)$(TargetName).application 
     set MANIFEST=$(TargetPath).manifest 
     set CERT=$(ProjectDir)$(TargetName).pfx 
     set PROJECTNAME=$(TargetName) 
     set CONFIGURATION=$(ConfigurationName) 
     set TARGETDIR=$(TargetDir) 
     set TEAMBUILD=$True 
     Powershell -File "$(ProjectDir)POSTBUILD.ps1" 
    </PostBuildEvent> 
    </PropertyGroup> 

    <!--CAME FROM PUBLISH COMMAND--> 
    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' != 'Debug|AnyCPU' AND '$(Configuration)|$(Platform)' != 'Release|AnyCPU' AND '$(BuildingInsideVisualStudio)' == 'true' "> 
    <PreBuildEvent> 
    </PreBuildEvent> 
    <PostBuildEvent> 
     set MAGE="C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\mage.exe" 
     set APPFILE=$(TargetDir)$(TargetName).application 
     set MANIFEST=$(TargetPath).manifest 
     set CERT=$(ProjectDir)$(TargetName).pfx 
     set PROJECTNAME=$(TargetName) 
     set CONFIGURATION=$(ConfigurationName) 
     set TARGETDIR=$(TargetDir) 
     set TEAMBUILD=$False 
     Powershell -File "$(ProjectDir)POSTBUILD.ps1" 
    </PostBuildEvent> 
    </PropertyGroup> 

이 포스트 빌드 이벤트 내부의 $ (BuildingInsideVisualStudio) 값을 기준으로 teambuild 값을 설정하는 방법이 있나요 : 여기에 내가 가진 무엇인가?

같은 뭔가하면 ('사실'$ (BuildingInsideVisualStudio) ==) 세트 TEAMBUILD = $ True로

또는 set TEAMBUILD = $$(BuildingInsideVisualStudio) 같은 심지어 뭔가?

+0

[This] (http://msdn.microsoft.com/en-us/library/ms164307.aspx)? –

+0

흠 ... 가능합니다. 나는 그것을 조사해야 할 것이다. 제안 해 주셔서 감사합니다. –

답변

3

이미 사용하고 있습니다 : Condition. TEAMBUILD 값으로 사용될 특성을 작성하기위한 추가 단계를 추출하면됩니다. 예를 들면 다음과 같습니다!

<PropertyGroup Condition='$(BuildingInsideVisualStudio)' != 'true' "> 
    <TeamBuildValue>FALSE</TeamBuildValue> 
</PropertyGroup> 

<PropertyGroup Condition='$(BuildingInsideVisualStudio)' == 'true' "> 
    <TeamBuildValue>TRUE</TeamBuildValue> 
</PropertyGroup> 

<PropertyGroup> 
    <PreBuildEvent> 
    </PreBuildEvent> 
    <PostBuildEvent> 
    ... 
    set TEAMBUILD=$(TeamBuildValue) 
    ... 
    </PostBuildEvent> 
</PropertyGroup> 
+0

오, 나는 그런 것들을 할 수 있는지 몰랐다. 나는 아직도 MSBuild에 처음 익숙하다. 하지만 고마워, 정확히 내가 원하는거야! –

0

나는 아마 선택/그렇지 않으면 ....... 대신 ==의 = 그냥 기본 설정을 시도 할 것입니다. 언젠가 ..... 세 번째 옵션이있을 수 있습니다.

<Choose> 
    <When Condition=" '$(Computername)'=='MySuperComputer01' ">    
     <PropertyGroup> 
      <FavoriteFood>Peanuts</FavoriteFood> 
      <FavoriteColor>Red</FavoriteColor> 
     </PropertyGroup> 
    </When> 

    <When Condition=" '$(Computername)'=='MySuperComputer02' "> 

    <PropertyGroup> 
      <FavoriteFood>Apples</FavoriteFood> 
      <FavoriteColor>Yellow</FavoriteColor> 
     </PropertyGroup> 

    </When> 

    <Otherwise> 

     <PropertyGroup> 
      <FavoriteFood>CrackersDefault</FavoriteFood> 
      <FavoriteColor>OrangeDefault</FavoriteColor> 
     </PropertyGroup>   

    </Otherwise> 

</Choose>