如何在csproj中为批量移除多种项的操作创建自定义别名?
实现方案
完全可以实现你的需求,这里提供两种常用的实现方式:
方案一:静态项批量移除(更推荐,无执行时机问题)
先统一管理所有需要排除的路径,再批量从三个集合中移除,代码非常简洁:
<ItemGroup> <!-- 所有要排除的路径统一在这里配置,新增仅需加一行 --> <ExcludedPaths Include="data\**" /> <ExcludedPaths Include="other\**" /> <ExcludedPaths Include="etc\**" /> </ItemGroup> <ItemGroup> <Content Remove="@(ExcludedPaths)" /> <Compile Remove="@(ExcludedPaths)" /> <EmbeddedResource Remove="@(ExcludedPaths)" /> </ItemGroup>
这种方式属于静态ItemGroup操作,在项目加载阶段就会完成移除,没有执行时机问题,性能也更好。
方案二:自定义RemoveAll节点(匹配你理想的写法)
你之前用Target不生效大概率是执行时机设置错误,只要把Target的执行时机提前到项目预处理阶段即可,完整代码如下:
<ItemGroup> <!-- 按你想要的写法配置要移除的路径 --> <RemoveAll Include="data\**" /> <RemoveAll Include="other\**" /> <RemoveAll Include="etc\**" /> </ItemGroup> <Target Name="ProcessRemoveAllRules" BeforeTargets="PrepareForBuild"> <ItemGroup> <Content Remove="@(RemoveAll)" /> <Compile Remove="@(RemoveAll)" /> <EmbeddedResource Remove="@(RemoveAll)" /> </ItemGroup> </Target>
核心是BeforeTargets="PrepareForBuild"属性,确保移除操作在编译资源收集、代码编译等流程之前执行,就能正常生效。这种方式适合需要动态计算排除路径的场景。
内容的提问来源于stack exchange,提问作者The Cookies Dog
相关产品推荐
相关产品推荐

