架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 682|回复: 1

[交流] .NET 项目设置中央包管理 (CPM)

[复制链接]
发表于 2024-3-16 18:27:01 | 显示全部楼层 |阅读模式
需求:Java 开发者在 maven 项目中可以使用 dependencyManagement 进行包管理,现在 .NET 解决方案也支持包管理了。当解决方案中的项目引用相同的包名时候也使用相同的版本。

先决条件,此功能适用于所有 NuGet 集成工具,从以下版本开始。

  • Visual Studio 2022 17.2
  • .NET SDK 6.0.300
  • nuget.exe 6.2.0


新建解决方案

新建一个新的解决方案,一个控制台应用、一个类库,都引用相同版本的 Newtonsoft.Json 包,如下:

QQ截图20240316181307.jpg

启用中央包管理

若要开始使用中央包管理,必须在存储库的根目录中创建一个 Directory.Packages.props 文件,并将 MSBuild 属性 ManagePackageVersionsCentrally 设置为 true。

然后,在其中使用定义包 ID 和版本的 <PackageVersion /> 元素定义项目所需的每个相应的包版本。

然后,为每个项目定义一个 <PackageReference /> 但省略 Version 属性,因为版本将从相应的 <PackageVersion /> 项获得。

现在,你即可使用中央包管理并在一个集中的位置管理版本了!如下图:

QQ截图20240316182610.jpg

dotnet-tocpm 工具

Dotnet 全局工具,用于将解决方案转换为Nuget CPM。当涉及包含多个项目的大型解决方案时,切换到 Nuget CPM 可能会很痛苦。dotnet-tocpm旨在通过一个简单的步骤执行此操作。

首先,全局安装该工具,命令如下:

先执行 simulate 命令试运行,命令如下:

QQ截图20240316182231.jpg

检查无误后,使用 execute 命令启用中央包管理,命令如下:

QQ截图20240316182443.jpg

参考:https://learn.microsoft.com/zh-cn/nuget/consume-packages/central-package-management#enabling-central-package-management
https://devblogs.microsoft.com/nuget/introducing-central-package-management/
https://github.com/DEVDEER/dotnet-tocpm





上一篇:Git 更改仓库地址(克隆到新仓库)
下一篇:Windows 11 无法新建记事本文件(文本文档)
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2024-3-16 18:43:59 | 显示全部楼层
.NET 9 有了 Directory.Packages.props 模板,可以通过模板命令新建,不需要手动创建,可以通过如下命令查看模板:


新建中央包命令:

码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-6-18 17:19

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表