1

如果我在 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 的项目?

4

1 回答 1

4

有两点需要注意。首先,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>
于 2011-05-24T15:33:24.297 回答