如果我在MSBuild文件中有以下目标:
<Target Name="Temp">
<CallTarget Targets="CreateTestList" />
<Message Text="TestList: -- @(TestAssembly) -- " />
<Message Text="Testing "%(TestAssembly.Identity)"" />
</Target>
<Target Name="CreateTestList">
<CreateItem Include="**\bin\$(Configuration)\*Tests.dll">
<Output TaskParameter="Include" ItemName="TestAssembly" />
</CreateItem>
<Message Text="TestList: -- @(TestAssembly) -- " />
<Message Text="Testing "%(TestAssembly.Identity)"" />
</Target>
如何使Temp
目标中的Message语句打印出CreateTestList
目标放入@(TestAssemblyList)ItemGroup的项目?
答案 0 :(得分:4)
有两点需要注意。首先,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>