首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Msbuild ItemGroup exclude不支持通配符

Msbuild ItemGroup exclude不支持通配符
EN

Stack Overflow用户
提问于 2017-08-30 23:58:36
回答 1查看 1.1K关注 0票数 1

此Itemgroup ItemsFromAnotherTarget包含:

代码语言:javascript
复制
..\..\References\AnotherFolder\ReferencedAssembly.dll
bin\GeneratedAssembly1.dll
bin\GeneratedAssembly2.dll
somefolder\somefile.txt
somefolder\somefile.exe
bin\anexe.exe

其思想是生成另一个包含以下内容的项目组BinaryFiles

代码语言:javascript
复制
bin\GeneratedAssembly1.dll
bin\GeneratedAssembly2.dll
somefolder\somefile.exe
bin\anexe.exe

因此,我有以下几点:

代码语言:javascript
复制
<ItemGroup>
    <BinaryFiles Include="@(ItemsFromAnotherTarget)" Condition="'%(Extension)'=='.dll' or '%(Extension)'=='.exe'" Exclude="..\..\References\AnotherFolder\ReferencedAssembly.dll" />
</ItemGroup>

因此,这将生成所需的物料组。但是如果我们用通配符替换Exclude,它就不能工作了。

代码语言:javascript
复制
Exclude="..\..\**\References\**"
Exclude="..\..\References\**\*.dll"
Exclude="..\..\References\**\*"
None of these work.

问题是References文件夹可能有多个文件夹和References,我们需要排除整个dlls文件夹。你知道如何使用通配符进行过滤吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-31 16:23:49

我唯一可以得到排除References文件夹的方法是通过正则表达式。这似乎有点老生常谈,任何其他建议都是受欢迎的。

代码语言:javascript
复制
<ItemGroup>
    <BinaryFiles Include="@(ItemsFromAnotherTarget)" Condition="(!$([System.Text.RegularExpressions.Regex]::IsMatch('%(Identity)', `.\\References\\.`))) and ('%(Extension)'=='.dll' or '%(Extension)'=='.exe')" />
</ItemGroup>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45964967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档