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

2023-02-24 09:02:19

在 .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 依賴版本號。這樣你就可以統一檢視,升級的時候只要該這一個地方,統一版本號,至少不會忘記升級某個專案。

參考

感謝閱讀,如果覺得本文有用,不妨點選推薦