Сделайте ItemGroup, созданную в цели MSBuild, доступной для вызывающих целей - PullRequest
1 голос
/ 24 мая 2011

Если у меня есть следующие цели в файле MSBuild:

<Target Name="Temp">
   <CallTarget Targets="CreateTestList" />
   <Message Text="TestList: -- @(TestAssembly) -- " />
   <Message Text="Testing &quot;%(TestAssembly.Identity)&quot;" />
</Target>   

<Target Name="CreateTestList">
     <CreateItem Include="**\bin\$(Configuration)\*Tests.dll">
          <Output TaskParameter="Include" ItemName="TestAssembly" />
     </CreateItem>
     <Message Text="TestList: -- @(TestAssembly) -- " />
     <Message Text="Testing &quot;%(TestAssembly.Identity)&quot;" />
</Target>

Как мне сделать операторы Message в моей цели Temp, распечатать элементы, которые цель CreateTestList поместила в @(TestAssemblyList) ItemGroup?

1 Ответ

4 голосов
/ 24 мая 2011

Две вещи на заметку. Во-первых, задача CreateItem по существу устарела. Сделайте его более читабельным, просто объявив ItemGroup внутри вашей цели. Во-вторых, из-за того, как MSBuild публикует элементы, вы должны заставить цель CreateTestList работать как зависимость, а не с CallTarget, которая в большинстве случаев имеет ограниченную полезность. Таким образом,

<Target Name="Temp" DependsOnTargets="CreateTestList">
   <Message
      ...
</Target>

<Target Name="CreateTestList">     
   <ItemGroup>
      <TestAssembly Include="**\bin\$(Configuration)\*Tests.dll">
   </ItemGroup>
   <Message
      ...
</Target>
...