.NET Core项目中如何按模式忽略指定node_modules文件夹
解决.NET Core SDK风格csproj中忽略apps子文件夹下node_modules的问题
我刚好碰到过类似的情况,SDK风格的.csproj默认会自动包含项目目录下的大部分文件,你之前的配置没生效主要有两个原因:一是路径写法的细节问题,二是没彻底覆盖默认的文件包含逻辑。
下面是经过验证的有效配置,直接加到你的.csproj文件里就行:
<ItemGroup> <!-- 移除已被包含的apps下所有node_modules及其内容 --> <Content Remove="apps/**/node_modules/**" /> <None Remove="apps/**/node_modules/**" /> <!-- 强制阻止这些路径被自动包含 --> <Content Include="apps/**/node_modules/**" Condition="false" /> <None Include="apps/**/node_modules/**" Condition="false" /> </ItemGroup>
关键细节说明:
- 用
**匹配任意层级的文件夹,末尾再加**是为了覆盖node_modules文件夹里的所有文件和子文件夹,只写apps/**/node_modules/只会匹配文件夹本身,不会处理里面的内容 - SDK风格项目会自动把文件归类为Content、None等类型,所以要同时处理这两种常见类型
- 加上
Condition="false"的Include配置,是为了彻底阻止MSBuild自动包含这些路径,避免后续其他配置意外覆盖你的排除规则
如果你的项目里还有其他自定义的文件包含规则,记得检查有没有和这个排除规则冲突的地方,比如有没有其他ItemGroup里的Include语句包含了apps/**/*这类范围过大的路径。
内容的提问来源于stack exchange,提问作者Grigor Aleksanyan
相关产品推荐
相关产品推荐

