我需要创建多个/testcontainer: 参数以提供给 exec 的 MsTest 的任务。
我有以下几点:
<ItemGroup>
<TestFiles Include="$(ProjectPath)\**\UnitTest.*.dll" />
</ItemGroup>
对于 TestFiles 中的每个匹配项,我想构建一个像这样的字符串:
"/testcontainer:UnitTest.SomeLibrary1.dll"
"/testcontainer:UnitTest.SomeLibrary2.dll"
"/testcontainer:UnitTest.SomeLibrary3.dll"
我正在尝试使用 MSBuild 的内部结构而不必创建自定义任务,这可能吗?
TIA
最佳答案
这实际上取决于此后的用法。例如,您将其发送到的任务,它是否在项目列表中接受并且您想调用它一次还是多次?
如果您想调用一次,则使用 @(...) 语法,如果您想多次调用它,则使用 %(...) 语法进行批处理。
调用一次
<Message Text="Test Files: @(TestFiles->'/testcontainer:%(RecursiveDir)%(Filename)%(Extension)')"/>
多次调用
<Message Text="Test Files: /testcontainer:%(TestFiles.RecursiveDir)%(TestFiles.Filename)%(TestFiles.Extension)"/>
有关批处理的更多信息,请访问 http://sedotech.com/Resources#batching
关于msbuild - 使用 MSBuild,如何通过迭代 ItemGroup 中的文件来构造动态字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2768595/