【问题标题】:.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
相关资源
最近更新 更多