在 .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 依赖版本号。这样你就能够对立查看,降级的时候只有该这一个中央,对立版本号,至多不会遗记降级某个我的项目。
参考
- Central Package Management (CPM)2
- Directory.Build.props3
感谢您的浏览,如果您感觉本文有用,快点击下方点赞按钮👍,让更多的人看到本文。
欢送关注作者的微信公众号“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/… ↩
- https://learn.microsoft.com/n… ↩
- https://learn.microsoft.com/v… ↩