Msbuild ItemGroup exclude 不适用于通配符



此项目组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>

相关内容

  • 没有找到相关文章

最新更新