使用一個文件集中管理你的 Nuget 依賴版本號

在 .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技術專欄”,獲取更多技術內容。 關注微信公衆號“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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章