此项目组ItemsFromAnotherTarget
包含:
....ReferencesAnotherFolderReferencedAssembly.dll
binGeneratedAssembly1.dll
binGeneratedAssembly2.dll
somefoldersomefile.txt
somefoldersomefile.exe
binanexe.exe
其想法是生成另一个包含的项目组BinaryFiles
binGeneratedAssembly1.dll
binGeneratedAssembly2.dll
somefoldersomefile.exe
binanexe.exe
所以我有以下内容:
<ItemGroup>
<BinaryFiles Include="@(ItemsFromAnotherTarget)" Condition="'%(Extension)'=='.dll' or '%(Extension)'=='.exe'" Exclude="....ReferencesAnotherFolderReferencedAssembly.dll" />
</ItemGroup>
因此,这将生成所需的项目组。但如果我们用外卡替换Exclude
,它就不起作用。
Exclude="....**References**"
Exclude="....References***.dll"
Exclude="....References***"
None of these work.
问题是References
文件夹可能有多个文件夹和dll,我们需要排除整个References
文件夹。知道如何使用通配符进行过滤吗?
排除References
文件夹的唯一方法是通过Regex。这似乎有点古怪,任何其他建议都是受欢迎的。
<ItemGroup>
<BinaryFiles Include="@(ItemsFromAnotherTarget)" Condition="(!$([System.Text.RegularExpressions.Regex]::IsMatch('%(Identity)', `.\References\.`))) and ('%(Extension)'=='.dll' or '%(Extension)'=='.exe')" />
</ItemGroup>