我需要创建多个/ 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
答案 0 :(得分:6)
这实际上取决于之后的用法。例如,您要发送给它的任务,是否在项目列表中接受并且您想要一次或多次调用它?
如果你想调用它一次,那么你使用@(...)语法,如果你想多次调用它,那么你用%(...)语法进行批处理。
要调用一次
<Message Text="Test Files: @(TestFiles->'/testcontainer:%(RecursiveDir)%(Filename)%(Extension)')"/>
多次调用
<Message Text="Test Files: /testcontainer:%(TestFiles.RecursiveDir)%(TestFiles.Filename)%(TestFiles.Extension)"/>
批处理的更多信息
答案 1 :(得分:2)
试试这个:?
<Message Text="TestFiles= @(TestFiles-> '"%(Fullpath)"', ' ')" />
参考文献: