NuGet支持了一个可以中心化管理NuGet包版本的方案,我们可以在一个地方统一管理NuGet包的版本
Preface在之前的版本中我们通常在每个指定包版本引用的地方会设置NuGet包的版本号,如果项目比较多,一个解决方案中有很多个项目的时候,很多时候就会出现重复的包版本配置
有些项目中会使用变量来管理某些包的版本,定义变量来管理包版本,包引用处使用变量来指定包版本
而NuGet终于推出了一种集中管理包版本的方案,我们可以将统一的包版本定义在一个Directory.Packages.props文件中,在项目文件中就不需要再指定版本了,统一使用统一定义的NuGet包版本,这样更新包版本只需要更新这一个文件即可
Directory.Packages.propsDirectory.Packages.props和之前介绍过的Directory.Build.props有些类似,项目会寻找最近的一个Directory.Packages.props
如下所示的项目结构:
Repository
--Directory.Packages.props
--Solution1
--Directory.Packages.props
--Project1
--Solution2
--Project2Project1会使用Repository\Solution1\目录下的Directory.Packages.propsProject2会使用Repository\目录下的Directory.Packages.props
Directory.Packages.props内容示例:
ProjectItemGroupPackageVersionInclude="Newtonsoft.Json"Version="13.0.1"//ItemGroup/Project
需要使用PackageVersion来定义中心化管理的包版本,对应项目中不能再包含Version定义了
当需要在项目文件中override某个包版本的时候可以使用VersionOverride指定要使用的版本,你可以通过定义一个MsBuild属性来禁用这一功能EnablePackageVersionOverridefalse/EnablePackageVersionOverride
Sample来看一个使用的示例:
Directory.Packages.props
ProjectPropertyGroup!--Enablecentralpackagemanagement--ManagePackageVersionsCentrallytrue/ManagePackageVersionsCentrally/PropertyGroupItemGroupPackageVersionInclude="JsonSchema.Net"Version="2.3.0"/PackageVersionInclude="MathNet.Numerics.Signed"Version="5.0.0"/PackageVersionInclude="Microsoft.Extensions.Logging.Console"Version="6.0.0"/PackageVersionInclude="System.CommandLine"Version="2.0.0-beta3..1"/PackageVersionInclude="WeihanLi.Common"Version="1.0.51"/PackageVersionInclude="WeihanLi.Npoi"Version="2.1.0"//ItemGroupItemGroupPackageVersionInclude="Microsoft.NET.Test.Sdk"Version="17.1.0"/PackageVersionInclude="FluentAssertions"Version="6.6.0"/PackageVersionInclude="Moq"Version="4.17.2"/PackageVersionInclude="xunit"Version="2.4.1"/PackageVersionInclude="Xunit.DependencyInjection"Version="8.5.0"/PackageVersionInclude="xunit.runner.visualstudio"Version="2.4.3"/PackageVersionInclude="coverlet.collector"Version="3.1.2"//ItemGroup/Project
项目文件示例:
ProjectItemGroupPackageReferenceInclude="JsonSchema.Net"/PackageReferenceInclude="MathNet.Numerics.Signed"/PackageReferenceInclude="Microsoft.Extensions.Logging.Console"/PackageReferenceInclude="System.CommandLine"/PackageReferenceInclude="WeihanLi.Common"/PackageReferenceInclude="WeihanLi.Npoi"//ItemGroup/Project
代码变更:
转载请注明:http://www.0431gb208.com/sjszyzl/259.html