为什么.netstandard 1.4是NetStandard.Library 1.6?

时间:2017-06-23 01:10:15

标签: c# .net-core .net-standard

我创建了一个.net核心类库包并将其上传到nuget.org

在依赖关系部分说我的项目依赖于.NetStandard 1.4,即NetStandard.Library高于1.6

为什么版本号中存在这样的混淆不匹配? Aren的.NetStandard和NetStandard.Library应该是同一个东西?或者他们是不同的东西?

这是我的.csproj

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard1.4</TargetFramework>
    <PackageVersion>2.0.1</PackageVersion>
    <AssemblyName>currency</AssemblyName>
  </PropertyGroup>
</Project>

以及我项目的链接:

https://www.nuget.org/packages/currency/

1 个答案:

答案 0 :(得分:6)

我找到了一个关于.NETStandard.Library的有趣页面:

What is the .NETStandard.Library metapackage?

在此页面上,作者说出以下内容:

  

因此,即使您的项目针对的是.NET Standard 1.3版(或多目标),您仍然可以使用最新的NETStandard.Library软件包版本(撰写本文时为1.6.1)。软件包本身的版本主要是因为它还包含各种工具支持,例如.NET标准版本列表。

在Microsoft的文档中,我找到了有关您的问题的以下信息:

  

目标netstandard1.3可能看起来很奇怪,但使用1.6.0版本的NETStandard.Library。它是一个有效的用例,因为元数据包维护了对旧的netstandard版本的支持。您可能已经在1.6.0版本的元数据包上进行了标准化,并将其用于所有库,这些库针对各种netstandard版本。使用这种方法,您只需要恢复NETStandard.Library 1.6.0而不是早期版本。

链接:Look at .NetStandard

我认为,它将使用最新版本的.NETStandard.Library,因为它与旧版本的.NETStandard兼容,并且它只是一个包含引用和一组标准.Net API的元数据包。因此,如果您的软件包使用.NETStandard.Library版本1.6.1

,那么这应该不是问题

注意:如果您使用.NETStandard 2.0并使用.NETStandard.Library版本1.6.1,则无法使用!

更新:在本回答的评论中提到svick,.NETStandard.Library的最低版本是版本1.6.0!