【问题标题】:why .netstandard 1.4 is NetStandard.Library 1.6?为什么 .netstandard 1.4 是 NetStandard.Library 1.6?
【发布时间】:2017-06-23 01:10:14
【问题描述】:

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

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

为什么版本号会出现如此混乱的不匹配? .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/

【问题讨论】:

  • .NET Standard 只是纸面上的一套 API,而 .NET Standard Library 是这些 API 的实际实现。由于 SDK 会为您解析 .NET 标准库版本,所以不必费心。

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


【解决方案1】:

我发现了一个关于 .NETStandard.Library 的有趣页面:

What is the .NETStandard.Library metapackage?

在这个页面上作者说如下:

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


在微软的文档中,我找到了关于您的问题的以下信息:

以 netstandard1.3 为目标但使用 NETStandard.Library 的 1.6.0 版本可能看起来很奇怪。这是一个有效的用例,因为元包保持对旧网络标准版本的支持。您可能已经在元包的 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,则无法使用!


更新:就像这个答案的 cmets 中提到的 svick 一样,.NETStandard.Library 的最低版本是 1.6.0 版!

【讨论】:

  • 您的帖子听起来像您可以决定使用NETStandard.Library 1.3 版。但你不能,那个版本不存在,只有 1.6.0+。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-23
  • 1970-01-01
相关资源
最近更新 更多