使在MSBuild目标中创建的ItemGroup可用于调用目标



如果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>

如何使Temp目标中的Message语句打印出CreateTestList目标放入@(TestAssemblyList)ItemGroup中的项?

需要注意的两件事。首先,CreateItem任务本质上是过时的。只需在目标中声明一个ItemGroup,即可使其更具可读性。其次,由于MSBuild发布项的方式,您需要使CreateTestList目标作为依赖项运行,而不是与CallTarget一起运行,在大多数情况下,CallTarget的作用有限。所以,

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

相关内容

  • 没有找到相关文章

最新更新