65.9K
CodeProject 正在变化。 阅读更多。
Home

.Net Standard

starIconstarIconstarIconemptyStarIconemptyStarIcon

3.00/5 (5投票s)

2016年11月19日

CPOL

3分钟阅读

viewsIcon

15662

在这篇文章中,我们将详细探讨如何避免在针对不同平台/环境时代码共享的诸多难题。

首先,我们将关注可移植类库 (PCL),然后用 .Net Standard 替换它。

可移植类库 (PCL)

PCL 的核心在于跨多个目标平台共享代码。其主要目标是在不同类型的 .Net 应用程序中重用代码,并针对特定平台。

让我们创建一个新的 .Net Core 应用程序,以引用一个普通的类库,看看它是否能正常工作。

打开 Visual Studio 2015,点击“文件”>“新建”>“项目”,然后从左侧菜单中选择 .net Core,例如 ASP.NET Core Web 应用程序,如下所示。

std_1

我选择了 ASP.NET Core 示例模板,如下所示。

std_2

让我们创建另一个项目,作为一个简单的类库。

std_3

请注意,我们正在针对 .Net Framework 4.6.1。

std_4

当我们尝试在我们的 ASP.NET Core 示例应用程序中引用它时,我们会看到一个警告。

std_5

.Net Framework 4.6.1 不受版本为 1.0 的 .Net Core 应用程序的支持,我们该如何解决?现在让我们创建一个可移植的类库,针对特定的目标平台。

std_6

配置目标选项。

std_7

.Net Framework 4.6 支持与 .Net Framework 4.5 相同的可移植 API 集。因此,它将自动针对 .Net Framework 4.5。

转到可移植类库的属性,我们可以看到我们已经针对 .Net Framework 4.5、ASP.NET Core 1.0 和 Windows 8。

std_8

将其引用到我们的 .Net Core 应用程序。

std_9

根据下图,我们现在有三个不同的基础类库 (BCL),它们针对特定的环境。这里的问题是为多个 .NET 平台编写代码。也很难确定不同平台上支持的 API。

dotnet-today

图片:blogs.msdn.microsoft.com

如果我们有一个统一的基础类库呢?

现在出现了 .NET Platform Standard,作为统一的基础类库,它可以在所有 .NET 平台上运行。

.NET Standard

以前称为 .NET Platform Standard,它是一组在所有 .NET 运行时上工作的 API。 .Net Standard 简化了代码共享问题。我们可以简单地用 .Net Standard 替换可移植类库 (PCL)。

dotnet-tomorrow

图片:blogs.msdn.microsoft.com

使用 .Net Standard,我们不是针对特定平台,而是使用跨平台/环境支持的不同版本的 .Net Standard。

std_10

我们可以通过点击“目标 .Net Platform Standard”将现有的 PCL 转换为 .Net Standard 库,如上图所示。

会显示带有更改效果的警告,点击“是”,它将更改库。

std_11

一个名为 project.json 的新文件将自动创建,其中包含目标环境信息。

std_12

Project.json

std_13

.NET Standard 版本

std_14

图片:blogs.msdn.microsoft.com

从上面的版本矩阵表 – .NET Core 1.0 针对 .NET Standard 版本 1.6,它将与所有较低版本 1.0 – 1.5 协同工作。

摘要

  • .NET Standard – 适用于跨 .NET 运行时(.NET framework、.NET core、Mono)
  • 可移植类库 (PCL) – 适用于目标 .NET 平台(.NET framework 4.5、ASP .NET core 1.1、Windows 8)

参考文献

 

© . All rights reserved.