用途:把当前 .NET 解决方案转换为集中包管理(CPM),将包版本集中到单个 Directory.Packages.props 文件。主要能力:查找当前目录下的 .sln;用 dotnet package list --include-transitive --format json 列出所有包(含传递依赖),解析出跨项目唯一包、版本及直接/传递属性;同包多版本时取最高版本;检查是否已有 CPM 文件,若 Directory.Packages.props 已存在则询问覆盖或合并,并记录已有 Directory.Build.props 内容;在 .sln 旁创建或更新 Directory.Packages.props 与 Directory.Build.props,写入 ManagePackageVersionsCentrally=true;更新所有 .csproj,移除 <PackageReference> 的 Version 属性(如从 <PackageReference Include="Newtonsoft.Json" Version="13.0.3" /> 改为 <PackageReference Include="Newtonsoft.Json" />);运行 dotnet build 验证,失败时可选择自动修复或手动处理。使用方式:在含 .sln 的目录中触发该技能,按其步骤执行;直接包默认写入 Directory.Packages.props,传递包通常不集中,仅当用户明确要固定版本或有安全更新需求时才添加为 PackageVersion 条目。限制:若找不到 .sln 会警告并停止;同包冲突自动取最高版本,无需确认;已存在 CPM 文件时需用户选择覆盖或合并;构建失败后的修复需用户决策。
dotnet-centralise-packages
编程与开发
更新于 10-15 22:17