在 .net 7 以前,项目对于 nuget 依赖项的版本依赖散落与解决方案的各个角落。这导致升级维护和查看的时候都比较麻烦。在 .net 7 中,你可以使用一个文件来集中管理你的 Nuget 依赖版本号。本篇文章将介绍如何使用这个功能。

为什么需要这个功能

通过单文件控制 Nuget 依赖版本号。那么你就可以:

  1. 统一查看
  2. 升级的时候只要该这一个地方
  3. 统一版本号,至少不会忘记升级某个项目

怎么操作呢

修改 Directory.Build.props

在你的项目根目录下创建一个 Directory.Build.props 文件,然后添加以下内容:

<Project>
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>
</Project>

这样就启用了这个功能。

创建一个 Directory.Packages.props 文件

在你的项目根目录下创建一个 Directory.Packages.props 文件,然后添加以下内容:

<Project>
<ItemGroup>
<PackageVersion Include="xunit" Version="2.4.2"/>
<PackageVersion Include="xunit.runner.visualstudio" Version="2.4.5">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageVersion>
<PackageVersion Include="coverlet.collector" Version="3.2.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageVersion>
</ItemGroup>
</Project>

这个文件就是你的 Nuget 依赖版本号的集中管理文件。其中的写法除了 PackageVersion 元素外,其他的都是 Nuget 的写法。你可以在这个文件中添加你的 Nuget 依赖版本号。

再次注意,这里是 PackageVersion 而不是 PackageReference

修改你的项目文件

在你的项目文件中,你可以通过以下方式来引用 Nuget 依赖:

<Project>
<ItemGroup>
<PackageReference Include="xunit" />
<PackageReference Include="unit.runner.visualstudio" />
</ItemGroup>
</Project>

该文件和以前的写法是一样的。但是你不需要再指定版本号了。

这样你就可以通过 Directory.Packages.props 来集中管理你的 Nuget 依赖版本号了。

如果我是 .net 7 以前的版本那怎么办

实际上在 .net 7 之前,你也可以通过因为额外的 Sdk 来实现这个功能。

Microsoft.Build.CentralPackageVersions1

总结

通过这个功能,你可以集中管理你的 Nuget 依赖版本号。这样你就可以统一查看,升级的时候只要该这一个地方,统一版本号,至少不会忘记升级某个项目。

参考

感谢阅读,如果觉得本文有用,不妨点击推荐或者在评论区留下 Mark,让更多的人可以看到。

欢迎关注作者的微信公众号“newbe技术专栏”,获取更多技术内容。


  1. https://github.com/microsoft/MSBuildSdks/tree/main/src/CentralPackageVersions

  2. https://learn.microsoft.com/nuget/consume-packages/central-package-management?WT.mc_id=DX-MVP-5003606

  3. https://learn.microsoft.com/visualstudio/msbuild/customize-your-build?view=vs-2022&WT.mc_id=DX-MVP-5003606#directorybuildprops-and-directorybuildtargets

最新文章

  1. 微信小程序前端源码逻辑和工作流
  2. View 以Diaglog 方式展示
  3. SQL 存储过程入门(事务)(四)
  4. 文件系统 第八次迭代 VFS相关说明
  5. C++类实现三维数组算法
  6. asp.net连接oracle的问题及方法总结
  7. CODEVS 3285 转圈游戏
  8. 文件上传[Uploadify]
  9. Socket编程指南及示例程序
  10. 深入理解 JavaScript 中的 replace 方法(转)
  11. Django model对象接口
  12. Deeplab v3+中的骨干模型resnet(加入atrous)的源码解析,以及普通resnet整个结构的构建过程
  13. 聊聊我面试过的一个最奇葩的 Java 程序猿!
  14. 电商系统架构总结2(Redis)
  15. PyQt5速成教程
  16. spring-boot parent变更为依赖方式
  17. docker and ssh issues
  18. jzoj5710
  19. C#NetRemoting双向通信
  20. C语言分支结构之if else语句

热门文章

  1. 产生10个1-20以内的随机数,要求不能重复(集合)Java
  2. MISC中需要jio本处理的奇怪隐写
  3. 【SQL进阶】【表默认值、自增、修改表列名、列顺序】Day02:表与索引操作
  4. 【Java EE】Day07 HTML
  5. SourceGenerator 使用姿势(1):生成代理类,实现简单的AOP
  6. web项目部署上线(无虚拟主机,待学习)
  7. elementui中 table表格 合并表头
  8. Kagol:2022年最值得推荐的前端开源文章
  9. 红袖添香,绝代妖娆,Ruby语言基础入门教程之Ruby3基础数据类型(data types)EP02
  10. Ynoi 数据结构题选做