ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

CentralisedPackageConverter目录排除技巧:如何精准控制项目扫描范围

CentralisedPackageConverter目录排除技巧:如何精准控制项目扫描范围 CentralisedPackageConverter目录排除技巧如何精准控制项目扫描范围【免费下载链接】CentralisedPackageConverterConverts a project to use Centralised Package Management项目地址: https://gitcode.com/gh_mirrors/ce/CentralisedPackageConverterCentralisedPackageConverter 是一款把 .NET 项目一键转换为中央包管理Centralised Package Management简称 CPM的开源命令行工具。当你的解决方案体量庞大、目录结构复杂时默认的扫描范围会把 bin、obj 等生成目录也纳入处理带来不必要的干扰甚至误改。本文分享 CentralisedPackageConverter 目录排除的核心技巧帮助你用好-x参数精准控制项目扫描范围让大项目转换又快又稳。一、CentralisedPackageConverter 是如何扫描目录的工具运行时会从你传入的根目录出发递归遍历整棵目录树。每一步深入子目录之前DirectoryCrawler见 DirectoryCrawler.cs都会用-x传入的正则表达式对目录名做一次匹配测试命中即整棵子树直接跳过不再进入。同时它只收集 5 种文件.csproj、.vbproj、.fsproj、.props、.targets定义于 PackageConverter.cs其他文件一律忽略。 关键点匹配对象是目录名而不是完整路径也不是文件名。二、默认排除规则开箱即用的三道防线工具内置默认值^\\.|^bin$|^obj$由|分隔成三段正则分别拦截三类目录正则片段作用典型目录^\\.拦截所有以点开头的隐藏目录.git、.vs、.idea^bin$拦截编译输出目录bin^obj$拦截中间文件目录obj也就是说不需要任何额外配置工具已经自动跳过隐藏目录和编译产物目录这是很多新手容易忽略的贴心设计。三、实战最常用的目录排除正则表达式只要自定义-x你就会整体覆盖默认值所以记得把默认的三段也写进去。下面是最常见的组合需求推荐正则排除测试目录-x ^\\.\|^bin$\|^obj$\|^(tests?)$排除 node_modules-x ^\\.\|^bin$\|^obj$\|^node_modules$排除旧包缓存目录-x ^\\.\|^bin$\|^obj$\|^packages$一次排除多个目录-x ^\\.\|^bin$\|^obj$\|^(tests\|node_modules\|packages)$排除以 test 结尾的目录-x ^\\.\|^bin$\|^obj$\|test$⚠️ 注意正则默认区分大小写由于匹配的是目录名请务必写^test$做精确匹配写成test会误伤contest、latest等目录。四、进阶技巧像专家一样组合规则掌握三个组合思路你就能应对绝大多数场景保留默认防线任何自定义-x都应包含^\\.|^bin$|^obj$避免生成目录混入转换。善用分组与锚点^(a|b|c)$是精确排除多个目录的最简洁写法^和$保证只匹配完整目录名。先干跑再落地配合-ddry-run只读模式先看会扫描到哪些文件确认无误后再正式执行绝不误伤。完整命令示例dotnet tool install CentralisedPackageConverter --global central-pkg-converter /path/to/YourProject -x ^\\.|^bin$|^obj$|^(tests|node_modules)$ -d五、安全第一目录排除后的正确操作顺序第 1 步先备份或对仓库打 Tag方便随时回滚第 2 步加-d干跑观察控制台列出的待处理项目清单确认排除规则生效第 3 步确认无误后去掉-d正式执行第 4 步转换完成后检查根目录生成的Directory.Packages.props验证版本号是否正确集中。六、常见问题速查Q1为什么我的排除没生效A请确认正则写的是目录名匹配且已整体覆盖默认值排查是否有大小写、锚点遗漏。Q2能排除某个具体子目录吗A可以。例如只排除src/legacy可构造^legacy$所有名为 legacy 的目录都会被跳过。Q3排除会影响到 CPM 版本集中吗A不会。被排除的目录中的项目不参与版本收集也就不会写入Directory.Packages.props这正是精准控制扫描范围的意义所在。掌握 CentralisedPackageConverter 目录排除技巧后即使面对上百个项目的巨型仓库你也能一键完成中央包管理转换让版本管理从此清晰可控。【免费下载链接】CentralisedPackageConverterConverts a project to use Centralised Package Management项目地址: https://gitcode.com/gh_mirrors/ce/CentralisedPackageConverter创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进