佛山顺德做网站,怎么运营一个淘宝店铺,如何编程软件,帮企商城源码NuGet 新特性 -- 中心化的 NuGet 包版本管理IntroNuGet 支持了一个可以中心化管理 NuGet 包版本的方案#xff0c;我们可以在一个地方统一管理 NuGet 包的版本Preface在之前的版本中我们通常在每个指定包版本引用的地方会设置 NuGet 包的版本号#xff0c;如果项目比较多我们可以在一个地方统一管理 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.propsDirectory.Packages.props 内容示例ProjectItemGroupPackageVersion IncludeNewtonsoft.Json Version13.0.1 //ItemGroup
/Project需要使用 PackageVersion 来定义中心化管理的包版本对应项目中不能再包含 Version 定义了当需要在项目文件中 override 某个包版本的时候可以使用 VersionOverride 指定要使用的版本你可以通过定义一个 MsBuild 属性来禁用这一功能 EnablePackageVersionOverridefalse/EnablePackageVersionOverrideSample来看一个使用的示例Directory.Packages.propsProjectPropertyGroup!-- Enable central package management --ManagePackageVersionsCentrallytrue/ManagePackageVersionsCentrally/PropertyGroupItemGroupPackageVersion IncludeJsonSchema.Net Version2.3.0 /PackageVersion IncludeMathNet.Numerics.Signed Version5.0.0 /PackageVersion IncludeMicrosoft.Extensions.Logging.Console Version6.0.0 /PackageVersion IncludeSystem.CommandLine Version2.0.0-beta3.22114.1 /PackageVersion IncludeWeihanLi.Common Version1.0.51 /PackageVersion IncludeWeihanLi.Npoi Version2.1.0 / /ItemGroupItemGroupPackageVersion IncludeMicrosoft.NET.Test.Sdk Version17.1.0 /PackageVersion IncludeFluentAssertions Version6.6.0 /PackageVersion IncludeMoq Version4.17.2 /PackageVersion Includexunit Version2.4.1 /PackageVersion IncludeXunit.DependencyInjection Version8.5.0 /PackageVersion Includexunit.runner.visualstudio Version2.4.3 /PackageVersion Includecoverlet.collector Version3.1.2 //ItemGroup
/Project项目文件示例Project ItemGroupPackageReference IncludeJsonSchema.Net /PackageReference IncludeMathNet.Numerics.Signed /PackageReference IncludeMicrosoft.Extensions.Logging.Console /PackageReference IncludeSystem.CommandLine /PackageReference IncludeWeihanLi.Common /PackageReference IncludeWeihanLi.Npoi //ItemGroup
/Project代码变更https://github.com/WeihanLi/dotnet-httpie/commit/a3ece1242e4edd83da36b195cd2859042dae0b5cMore使用这一功能我们可以更方便的管理我们项目中的 NuGet 包版本目前还没有默认启用需要等下一个版本的 SDK 发布现在使用需要显式声明 ManagePackageVersionsCentrallytrue/ManagePackageVersionsCentrally下个版本就会默认支持不再需要显式声明了如果你要禁用则声明为 false 即可目前的 SDK 中还是一个 preview feature但是已经可用如果同时使用多个 NuGet 源同一个 package 存在于多个源中则会遇到一个 NU1507 的 warning可以结合 Package Source Mapping 来指定 package 要使用源nuget.config 示例!-- Define the package sources, nuget.org and contoso.com. --
!-- clear ensures no additional sources are inherited from another config file. --
packageSourcesclear /!-- key can be any identifier for your source. --add keynuget.org valuehttps://api.nuget.org/v3/index.json /add keycontoso.com valuehttps://contoso.com/packages/ /
/packageSources!-- Define mappings by adding package patterns beneath the target source. --
!-- Contoso.* packages will be restored from contoso.com, everything else from nuget.org. --
packageSourceMapping!-- key value for packageSource should match key values from packageSources element --packageSource keynuget.orgpackage pattern* //packageSourcepackageSource keycontoso.compackage patternContoso.* //packageSource
/packageSourceMappingReferenceshttps://devblogs.microsoft.com/nuget/introducing-central-package-management/https://github.com/NuGet/Samples/pull/52https://docs.microsoft.com/en-us/nuget/consume-packages/central-package-managementhttps://docs.microsoft.com/zh-cn/nuget/consume-packages/package-source-mappinghttps://github.com/WeihanLi/dotnet-httpie/commit/a3ece1242e4edd83da36b195cd2859042dae0b5c