나는 msbuild 프로젝트를 가지고있어 결과가 왜 그런지 궁금합니다. 그것은 어떤 종류의 문제 또는 어떤 것을 일으키는 것은 아니지만 그것을 시도하고 더 잘 이해하고자합니다. MSBuild : Items + Batching + CreateItem + Transforms Question
<?xml version="1.0" encoding="utf-8" ?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="TestTarget1;TestTarget2" ToolsVersion="3.5">
<ItemGroup>
<PathDir Include="C:\RootDir\UniqueDir1"/>
<PathDir Include="C:\RootDir\UniqueDir2" />
</ItemGroup>
<Target Name="TestTarget1" Outputs="%(PathDir.Identity)">
<PropertyGroup>
<RootPath>%(PathDir.Identity)</RootPath>
</PropertyGroup>
<ItemGroup>
<SubDirectory Include="Common1"/>
<SubDirectory Include="Common2"/>
</ItemGroup>
<CreateItem Include="@(SubDirectory->'$(RootPath)\%(Identity)')">
<Output TaskParameter="Include" ItemName="FullPath"/>
</CreateItem>
<Message Text="@(FullPath)"/>
</Target>
<Target Name="TestTarget2">
<Message Text="@(FullPath)"/>
</Target>
</Project>
그래서 나는 고유 한 두 가지 경로가 각에서 나는 특유의 각 경로에 같은 이름을 가진 두 개의 디렉토리가 있습니다. target1에서 PathDir의 항목 ID에 대해 일괄 처리 한 다음 고유 디렉터리에있는 공용 폴더 이름이 들어있는 항목 SubDirectory에 대한 변환을 수행하여 전체 경로가 포함 된 새 항목을 만듭니다. 다음과 같이 그래서 어쨌든, 그 후, 대상의 출력은 다음과 같습니다
대상 1 :
C:\RootDir\UniqueDir1\Common1;C:\RootDir\UniqueDir1\Common2
C:\RootDir\UniqueDir2\Common1;C:\RootDir\UniqueDir2\Common2
대상 2 :
이C:\RootDir\UniqueDir1\Common1;C:\RootDir\UniqueDir1\Common2;C:\RootDir\UniqueDir2\Common1;C:\RootDir\UniqueDir2\Common2
그래서 내 생각 내 질문은 ... 않는 이유 target1은 일괄 처리중인 디렉토리가있는 디렉토리 만 표시합니까? 아마도 일괄 처리와 관련이 있다는 것을 알지만, 내가 아는 전부입니다.