从 UWP 和 ASP.NET 5 引用 class 库

Reference a class library from UWP and ASP.NET 5

我正在尝试创建一个 class 库,它将包含 WebAPI(使用 ASP.NET 5)和一个消费 UWP 应用程序的公共对象(主要是 DTO)。但是,我还没有弄清楚如何创建 class 库,以便它可以从其他两个项目中引用。

到目前为止我已经尝试过:
首先,我尝试了一个 Class 库(包),它可以在 Web 下找到。这种类型的库可以从 ASP.NET 项目中引用而没有问题,但是当尝试从 UWP 项目中引用它时,我收到以下消息:

A reference to 'ClassLibrary1' could not be added. 

接下来,我尝试了一个Class库(Windows通用),可以在Windows下找到> 通用。这很容易成为 UWP 项目的引用,但是当尝试从 ASP.NET 引用它时,我得到:

The following projects are not supported as references : 

  - The project ClassLibrary2 has a target framework that is incompatible or has version higher than the current project and cannot be referenced.

那么:我如何创建一个 class 库,它可以在 ASP.NET 5 项目 UWP 项目中使用?

您需要的是便携式 Class 库(在 Windows 下)。

由于您只针对 ASP.NET 5 和 Windows 10,因此您可以将平台限制为仅这两个平台,但没有 "error" 支持更多平台(它可以限制有多少共享 API 可用)。

.Net Standard class library 应被视为可移植 class 库的继承者。两者都旨在促进不同 .Net 平台之间的代码共享(在本例中为模型 objects/DTOs)。

在 Visual Studio 2017 年,您现在可以选择 .Net Standard class 库模板。这个 class 库可以设置为针对不同版本的 .Net Standard。您应该定位的 .Net 标准版本将取决于您希望在哪些 .Net 平台之间共享代码。

对于这个特定问题,我们希望支持通用 Windows 平台 (UWP) 应用程序和 Asp.Net 核心应用程序。因此,我们应该参考此 compatibility table 来确定支持这两个平台的 .Net 标准版本。在这种情况下,它将是 .Net Standard 1.4。将 class 库设置为以 .Net Standard 1.4 为目标后,您可以从 UWP 和 Asp.Net 核心项目添加对 class 库的引用。

为了更好地理解什么是 .Net 标准以及它如何促进代码共享,我建议查看以下内容:

  1. Introducing .NET Standard
  2. Video Series on .NET Standard(这个特别好)
  3. .Net Standard FAQ