c# - msbuild中的集合包含或交集?
问题描述
在下面的 MSBuild 片段中,我正在尝试创建一个 ItemGroup,其中包含所引用程序集的子集——这样如果引用了 LibA 或 LibB,则它们包含在输出项中,但如果它们没有被引用,则它们不包括在内(并且它永远不会包括指定的项目以外的任何项目)。
<ItemGroup>
<RefSubset Include="@(ReferencePath)"
Condition="'%(ReferencePath.Filename)' == 'LibA' OR
'%(ReferencePath.Filename)' == 'LibB'"/>
</ItemGroup>
这行得通,但似乎不优雅。我想做的是这样的:
<PropertyGroup>
<RefSubsetNames>LibA;LibB</RefSubsetNames>
</PropertyGroup>
RefSubset
然后以它RefSubsetNames
用来执行条件的方式重写规则。
重要目标:
- 上的所有元数据都
ReferencePath
必须保存到RefSubset
. RefSubsetNames
;;
可以包含必须忽略的空值 ( )。- 的每个组件都
RefSubsetNames
应该完全匹配ReferencePath.Filename
-- 它不应该允许子集匹配(所以基本Contains
检查是错误的)。
我已经设法实现了我想要的,但它看起来有点难看,我想知道是否有更好的解决方案?
<ItemGroup>
<RefSubset Include="@(ReferencePath)"
Condition="$([System.String]::Copy(';$(RefSubsetNames);').Contains(';%(ReferencePath.Filename);'))" />
</ItemGroup>
解决方案
推荐阅读
- python - 处理 selenium python 中的“从计算机中选择”按钮(上传文件)
- pytorch - 在 Pytorch 中重新实现 Autorec 时的问题
- javascript - 错误:对象作为 React 子对象无效(找到:带有键 {id, value} 的对象)。如果您打算渲染一组孩子,请使用数组
- reactjs - 盖茨比无法建立静态页面
- r - 如何在R中更改下划线前后的单词顺序
- random-forest - PMML:我可以得到随机森林类预测的概率,但为什么我不能得到置信度分数?
- android - Jetpack Compose 中的深层链接导航
- javascript - 如何在 React 中动态命名变量
- java - 在 android studio 默认导航抽屉中使用片段和 firebase 添加个人资料页面
- html - 带有图像的样式容器