在 .net 7 以前,項目對於 nuget 依賴項的版本依賴散落與解決方案的各個角落。這導致升級維護和查看的時候都比較麻煩。在 .net 7 中,你可以使用一個文件來集中管理你的 Nuget 依賴版本號。本篇文章將介紹如何使用這個功能。
爲什麼需要這個功能
通過單文件控制 Nuget 依賴版本號。那麼你就可以:
- 統一查看
- 升級的時候只要該這一個地方
- 統一版本號,至少不會忘記升級某個項目
怎麼操作呢
修改 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技術專欄”,獲取更多技術內容。
- 本文作者: newbe36524
- 本文鏈接: https://www.newbe.pro/Others/0x025-Use-one-file-to-centrally-manage-your-Nuget-dependency-version-numbers/
- 版權聲明: 本博客所有文章除特別聲明外,均採用 BY-NC-SA 許可協議。轉載請註明出處!
-
https://github.com/microsoft/MSBuildSdks/tree/main/src/CentralPackageVersions↩
-
https://learn.microsoft.com/nuget/consume-packages/central-package-management?WT.mc_id=DX-MVP-5003606↩
-
https://learn.microsoft.com/visualstudio/msbuild/customize-your-build?view=vs-2022&WT.mc_id=DX-MVP-5003606#directorybuildprops-and-directorybuildtargets↩