2011-02-23 2 views

답변

26

대상에 존재 조건을 사용할 수 있습니까?

msbuild 파일과 동일한 디렉토리에 Testing이라는 디렉토리 또는 파일이있는 경우에만이 옵션이 OnlyIfExists 대상을 실행합니다.

<ItemGroup> 
    <TestPath Include="Testing" /> 
</ItemGroup> 
<Target Name="OnlyIfExists" Condition="Exists(@(TestPath))"> 
    <Message Text="This ran!" Importance="high" /> 
</Target> 
+1

대단히 고마워요. 이것은 훌륭하고 분명합니다. –

8

확장팩을 사용할 필요가 없으므로 MSBuild에서 잘 처리 할 수 ​​있습니다. 이 폴더가 빌드의 일부로 작성되거나 삭제 될 수 있는지 여부를 고려해야합니다. 그렇다면 대상 내에 선언 된 동적 항목 그룹 (둘 이상의 폴더를 확인하는 경우)을 사용하거나 경로를 선택하면 경로를 사용할 수 있습니다. 이 예는 다음 두 가지를 모두 보여줍니다.

<Target Name="MyTarget"> 
    <!-- single folder with property --> 
    <PropertyGroup> 
     <_CheckOne>./Folder1</_CheckOne> 
     <_CheckOneExistsOrNot 
      Condition="Exists('$(_CheckOne)')">exists</_CheckOneExistsOrNot> 
     <_CheckOneExistsOrNot 
      Condition="!Exists('$(_CheckOne)')">doesn't exist</_CheckOneExistsOrNot> 
    </PropertyGroup> 
    <Message 
     Text="The folder $(_CheckOne) $(_CheckOneExistsOrNot)" 
     /> 

    <!-- multiple folders with items --> 
    <ItemGroup> 
     <_CheckMultiple Include="./Folder2" /> 
     <_CheckMultiple Include="./Folder3" /> 
    </ItemGroup> 
    <Message 
     Condition="Exists('%(_CheckMultiple.Identity)')" 
     Text="The folder %(_CheckMultiple.Identity) exists" 
     /> 
    <Message 
     Condition="!Exists('%(_CheckMultiple.Identity)')" 
     Text="The folder %(_CheckMultiple.Identity) does not exist" 
     /> 
</Target> 
관련 문제