• 使用一个文件集中管理你的 Nuget 依赖版本号


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

    为什么需要这个功能

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

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

    怎么操作呢

    修改 Directory.Build.props

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

    <Project>
    <PropertyGroup>
    <ManagePackageVersionsCentrally>trueManagePackageVersionsCentrally>
    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>allPrivateAssets>
    <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitiveIncludeAssets>
    PackageVersion>
    <PackageVersion Include="coverlet.collector" Version="3.2.0">
    <PrivateAssets>allPrivateAssets>
    <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitiveIncludeAssets>
    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技术专栏”,获取更多技术内容。 关注微信公众号“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

  • 相关阅读:
    大模型引领未来:探索其在多个领域的深度应用与无限可能【第五章、广告营销与文化娱乐:AI与大模型创造无限可能】
    详解7道经典指针运算笔试题!
    JTAG 详解
    SqlBulkCopy - 批量写入数据库
    Go语言网络编程(socket编程)TCP粘包
    ASP .NET Core API(swaggerUI)实例demo下载、发布与部署(各种遇到的坑、解决方法)
    springbooy求职招聘网站毕业设计-附源码301914
    【Python】进阶学习:一文了解NotImplementedError的作用
    函数式接口:Java 中的函数式编程利器
    Stata17 MP/SE/BE(包含常用模型代码和熵值法计算代码)
  • 原文地址:https://www.cnblogs.com/newbe36524/p/0x025-Use-one-file-to-centrally-manage-your-Nuget-dependency-version-numbers.html