以下只给我一个文件,exe:
<ItemGroup>
<AssembliesToMerge Include="$(MSBuildProjectDirectory)\App\bin\Release\*.*" Condition="'%(Extension)'=='.dll'"/>
<AssembliesTomerge Include="$(MSbuildProjectDirectory)\App\bin\Release\App.exe"/>
</ItemGroup>
如果我删除Condition属性,AssembliesToMerge包含目录中的所有文件 - dll和其他。我做错了什么?
我正在通过ILMerge MSBuildCommunityExtensions Task测试这个。如果有一种方法可以直接打印ItemGroup中的项目,那么这可能有助于确保它是Condition属性的问题。
答案 0 :(得分:2)
只需在包含中使用通配符即可过滤dll文件(Items wildcard)
<ItemGroup>
<AssembliesToMerge Include="$(MSBuildProjectDirectory)\App\bin\Release\*.dll"/>
<AssembliesTomerge Include="$(MSbuildProjectDirectory)\App\bin\Release\App.exe"/>
</ItemGroup>
我认为使用条件属性不起作用,因为在创建过程中尚未设置项元数据,因此%(Extension)
为空。