本文介绍了MSBuild中的交叉加入项目组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
给出类似的内容.
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="test" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ConfigFiles Include="*.config" />
<DatabaseConfig Include="ABC">
<Database>DB1</Database>
<CsString>Database</CsString>
</DatabaseConfig>
<DatabaseConfig Include="DEF">
<Database>DB2</Database>
<CsString>Logging</CsString>
</DatabaseConfig>
</ItemGroup>
<Target Name="test" >
<!-- Some sort of join here (or somewhere)... -->
<Message Text=" %(Combined.ConfigFile) %(Combined.Database) " />
</Target>
</Project>
我希望输出是这样的..(给定两个文件one.config& two.config)
I'd like the Output to be something like this.. (given two files one.config & two.config)
one.config DB1
two.config DB1
one.config DB2
two.config DB2
(顺序并不重要,只是两个ItemGroups的完整笛卡尔积)
(the order is not important, just the full cartesian product of the two ItemGroups)
推荐答案
这似乎是一个整洁的解决方案:
This seems like a tidy solution:
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="test" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ConfigFiles Include="*.config" />
<DatabaseConfig Include="ABC">
<Database>DB1</Database>
<CsString>Database</CsString>
</DatabaseConfig>
<DatabaseConfig Include="DEF">
<Database>DB2</Database>
<CsString>Logging</CsString>
</DatabaseConfig>
</ItemGroup>
<Target Name="test" >
<ItemGroup>
<Combined Include="@(DatabaseConfig)">
<ConfigFile>%(ConfigFiles.Identity)</ConfigFile>
</Combined>
</ItemGroup>
<Message Text=" %(Combined.ConfigFile) %(Combined.Database) " />
</Target>
</Project>
这篇关于MSBuild中的交叉加入项目组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!