【问题标题】:.Net NuGet package multi target .NetStandard 2.0 pre-release/.NetFramework v4.6.1 compatible to UWP project.Net NuGet 包多目标 .NetStandard 2.0 pre-release/.NetFramework v4.6.1 兼容UWP项目
【发布时间】:2017-07-21 22:29:51
【问题描述】:

我创建了一个 NuGet 包,它支持 .NetStandard 2.0 预发行版和 .NetFramework v4.6.1(在 Visual Studio 15.3 预览版中构建和使用)之间的多目标

我知道 .NetStandard 2.0 预发行版在 vnext 之前与 UWP 不兼容,但我的理解是 .NetFramework v4.6.1 是兼容的。

我目前无法将我的 NuGet 包安装到 UWP 项目中,有没有办法让它兼容?

【问题讨论】:

  • “但我的理解是 .NetFramework v4.6.1 是兼容的” - 你的意思是你希望将 net461 包安装到 UWP 中吗?我不希望这会奏效。
  • .NET Framework v4.6.1 兼容 .NET Standard 2.0,不兼容 UWP。

标签: uwp visual-studio-2017 nuget-package .net-standard .net-4.6.1


【解决方案1】:

.NET Standard 是 .NET API 的正式规范,旨在用于所有 .NET 运行时。它定义了一套统一的 API,供所有 .NET 平台实施,独立于工作负载。

当 NuGet 包以 .NET Standard 2.0 为目标时,这意味着该包可以在 .NET Core 2.0 中使用.NET Framework 4.6.1(带有工具 2.0 预览版)。所以从字面上看,.Net Standard 2.0.NET Framework 4.6.1 之间没有多目标,它应该类似于 .NET Core 2.0.NET Framework 4.6.1 之间的多目标。

如果您希望您的包与 UWP.NET Framework 4.6.1 兼容,那么您可以针对 .NET Standard 1.4 .这是目前两个平台都支持的 .NET Standard 的最高版本。因此无法将 .NET Standard 2.0 包安装到 UWP 项目中。

在选择 .NET Standard 版本时,您应该考虑以下权衡:

  • 版本越高,可用的 API 就越多。
  • 版本越低,实现它的平台就越多。

一般来说,我们建议您尽可能以最低版本的 .NET Standard 为目标。因此,在找到您可以定位的最高 .NET Standard 版本后,请按照以下步骤操作:

  1. 以 .NET Standard 的下一个较低版本为目标并构建您的项目。
  2. 如果您的项目构建成功,请重复第 1 步。否则,请重新定位到下一个更高版本,这就是您应该使用的版本。

更多信息,请参阅.NET platforms support

对于UWP.NET Framework 4.6.1,它们之间没有兼容性。尽管 .NET Framework 中提供的类型子集可用于使用 C# 或 Visual Basic 创建 UWP 应用,但这是因为这些 API 是 .NET Standard 的一部分,因此它们在 UWP 中可用。如果包的目标是 .NET Framework 4.6.1,那么它也不能在 UWP 中使用。

【讨论】:

  • 如果你想让没有VS2017的人消费这个项目怎么办?我的意思是我认为 VS2015 无法理解对standard2.0 项目的引用
猜你喜欢
  • 1970-01-01
  • 2018-03-29
  • 2018-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-15
  • 1970-01-01
相关资源
最近更新 更多