如果我的 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>
Run Code Online (Sandbox Code Playgroud)
如何使目标中的 Message 语句打印出目标放入 @(TestAssemblyList) ItemGroup 中的Temp项目?CreateTestList
有两件事需要注意。首先,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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3326 次 |
| 最近记录: |