.Net Standard





3.00/5 (5投票s)
在这篇文章中,我们将详细探讨如何避免在针对不同平台/环境时代码共享的诸多难题。
首先,我们将关注可移植类库 (PCL),然后用 .Net Standard 替换它。
可移植类库 (PCL)
PCL 的核心在于跨多个目标平台共享代码。其主要目标是在不同类型的 .Net 应用程序中重用代码,并针对特定平台。
让我们创建一个新的 .Net Core 应用程序,以引用一个普通的类库,看看它是否能正常工作。
打开 Visual Studio 2015,点击“文件”>“新建”>“项目”,然后从左侧菜单中选择 .net Core,例如 ASP.NET Core Web 应用程序,如下所示。
我选择了 ASP.NET Core 示例模板,如下所示。
让我们创建另一个项目,作为一个简单的类库。
请注意,我们正在针对 .Net Framework 4.6.1。
当我们尝试在我们的 ASP.NET Core 示例应用程序中引用它时,我们会看到一个警告。
.Net Framework 4.6.1 不受版本为 1.0 的 .Net Core 应用程序的支持,我们该如何解决?现在让我们创建一个可移植的类库,针对特定的目标平台。
配置目标选项。
.Net Framework 4.6 支持与 .Net Framework 4.5 相同的可移植 API 集。因此,它将自动针对 .Net Framework 4.5。
转到可移植类库的属性,我们可以看到我们已经针对 .Net Framework 4.5、ASP.NET Core 1.0 和 Windows 8。
将其引用到我们的 .Net Core 应用程序。
根据下图,我们现在有三个不同的基础类库 (BCL),它们针对特定的环境。这里的问题是为多个 .NET 平台编写代码。也很难确定不同平台上支持的 API。
图片:blogs.msdn.microsoft.com
如果我们有一个统一的基础类库呢?
现在出现了 .NET Platform Standard,作为统一的基础类库,它可以在所有 .NET 平台上运行。
.NET Standard
以前称为 .NET Platform Standard,它是一组在所有 .NET 运行时上工作的 API。 .Net Standard 简化了代码共享问题。我们可以简单地用 .Net Standard 替换可移植类库 (PCL)。
图片:blogs.msdn.microsoft.com
使用 .Net Standard,我们不是针对特定平台,而是使用跨平台/环境支持的不同版本的 .Net Standard。
我们可以通过点击“目标 .Net Platform Standard”将现有的 PCL 转换为 .Net Standard 库,如上图所示。
会显示带有更改效果的警告,点击“是”,它将更改库。
一个名为 project.json 的新文件将自动创建,其中包含目标环境信息。
Project.json
.NET Standard 版本
图片: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)
参考文献
- https://blogs.msdn.microsoft.com/dotnet/2016/09/26/introducing-net-standard
- https://docs.microsoft.com/en-us/dotnet/articles/standard/library
- https://github.com/dotnet/standard
- https://github.com/dotnet/standard/blob/master/docs/faq.md