图片 1

使用Api分析器与Windows兼容包来编写智能的跨平台.NET Core应用,api分析器

使用Api分析器与Windows兼容包来编写智能的跨平台.NET Core应用,api分析器

本文翻译自Scott Hanselman博客:

正文:

这是最近这几周你应该知道的一对.Net
Core界的优秀工具。我们在编写或者移植跨平台代码时,它们非常有帮助。

本文翻译自Scott Hanselman博客:

.NET Standard 2.0 发布日期:2017年8月14日
公告原文地址

.NET API 分析器

首先是API
分析器。如你所知,有时候我们会遇到过时的API,或者一个方法你可以在Windows下使用,但是在Linux下却不能工作。API分析器是一个Roslyn(Roslyn是C#/.NET编译器的名称)分析器,它可以很容易地添加到你的项目,通过一个NuGet包。你所要做的就是添加这个包,之后你将立即得到警告,或者波浪线表示API有问题。

看看这个简单地例子。我将生成一个简单地控制台应用,它已经添加了API分析器。注意这个版本号是目前的,以后会改变。

C:\supercrossplatapp> dotnet new console
C:\supercrossplatapp> dotnet add package Microsoft.DotNet.Analyzers.Compatibility --version 0.1.2-alpha

 然后我将使用一个只能在Windows下使用的API。但是我依旧希望在任何平台下都可以运行。

static void Main(string[] args)

{

    Console.WriteLine(“Hello World!”);

 

    if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))

    {

        var w = Console.WindowWidth;

        Console.WriteLine($”Console Width is {w}”);

    }

}

之后我使用“dotnet
build”命令(或者运行命令,运行也包含build动作)然后我得到了一个漂亮的警告,这个API不能工作在所有平台下。

C:\supercrossplatapp> dotnet build

Program.cs(14,33): warning PC001: Console.WindowWidth isn’t supported on
Linux, MacOSX [C:\Users\scott\Desktop\supercr

ossplatapp\supercrossplatapp.csproj]

  supercrossplatapp ->
C:\supercrossplatapp\bin\Debug\netcoreapp2.0\supercrossplatapp.dll

Build succeeded.

.NET团队的Olia做了一个很好的YouTube视频,她的视频展示了API分析器是如何工作的。API分析器的代码已经上传到Github。如果你发现了bug请在上面提issue!

前言

早上起来.NET社区沸腾了,期待已久的.NET Core
2.0终于发布!根据个人经验,微软的产品一般在2.0时会趋于成熟,所以一个新的.Net开发时代已经来临!未来属于.NET
Core。

对于.NET Core 2.0的发布介绍,围绕2.0的架构体系,本系列相关文章:

  1. .Net Core 2.0 生态(1).NET Standard 2.0
    特性介绍和使用指南(已发布)
  2. .Net Core 2.0 生态(2).NET Core 2.0
    特性介绍和使用指南(已发布)
  3. .Net Core 2.0 生态(3)ASP.NET Core 2.0
    特性介绍和使用指南(已发布)
  4. .Net Core 2.0 生态(4)Entity Framework Core 2.0
    特性介绍和使用指南(已发布)

.NET Standard 2.0是基石,所以放在第一篇。

使用之前,下载安装.NET Core
2.0,下载地址。

.NET CORE的windows兼容包

第二个,.NET Core的Windows兼容包是一个很好的补充技术。当.NET Core
2.0开发完成并推出后,它包含3.2万个很好地兼容现有.NET
Framework代码的API。实际上,它们确实兼容地非常好,我之前可以很容易地将一个15年前的.NET程序移植到.NET
Core2.0上,这个过程中都没有碰到什么麻烦。

从.NET Standard1.6的1.3万个api到.NET
Standard2.0的3.2万个API,他们增加了一倍多的可用API

.NET Standard非常的酷炫,因为它支持如下平台:

  • .NET Framework 4.6.1

  • .NET Core 2.0

  • Mono 5.4

  • Xamarin.iOS 10.14

  • Xamarin.Mac 3.8

  • Xamarin.Android 7.5

当你迁移代码到.NET
Core时会有大量的Windows平台特有的依赖,你可能会遇到有些API在.NET
Standard找不到的情况。这时,这个新的NuGet包Microsoft.Windows.Compatibility(预览),它可以提供原先只在.NET
Framework可用的API。

在这个兼容包里面的API会包含两种类型。一种是这个API原先就是Windows的一部分,但是也可以跨平台工作。另外一种是只能在windows下工作,因为他们是操作系统特有的。例如,API访问WIndows注册表这是Windows下独有的。但是System.DirectoryServices或者System.Drawing他们却可以在任何平台都工作的很好。Windows兼容包在.NET
Core现在可用Api的基础上新增呢20000多个API。可以参阅Immol录制的视频。

问题在于,如果这些不可用API是你使用.NET
Core的拦路虎,那么现在你可以借助兼容包,耶!但是你要知道你为什么需要迁移到.NET
Core。.NET Core与完整版.NET
Framework都可以在Windows上工作。如果你的程序目前工作的很好,并且不需要.NET
Core的新特性,那么就不需要移植到.NET Core。这是规则列表:

使用.NET Core的情况:

  • 你有跨平台需求

  • 你的目标是微服务

  • 你使用Dorcker容器

  • 你有高性能与可拓展需求

  • 你需要同步.NET版本

使用.NET Core的情况:

  • 你的程序当前使用.NET Framework(推荐采用拓展来替代迁移)

  • 你的程序使用第三方.NET库或者NuGet包,它们的.NET Core版本还不可用

  • 你所使用的.NET技术在.NET Core上还没有支持

  • 你的程序所使用的操作系统平台目前.NET Core还不支持

正文:

.NET Standard 2.0 特性介绍

  • 代码共享:.NET
    Standard是API集合,更是代码实现标准,所有.NET实现必须符合该标准,防止代码碎片化。.NET
    Standard被设计用来作为替代可移植类库Portable Class
    Libraries(PCL)的构建工具。

  • API支持:在.NET Standard
    2.0中API支持数量增多,包含API数量为32000个,.NET Standard 1.6
    中API数量为13000个,目前为止已经包含.NET
    Framework中的大部分APIs,这意味着可以轻松地将现有代码移植到.NET
    Standard,从而使现有代码支持基于.NET
    Standard实现的任何平台,参看平台支持列表。

  • .NET Framework兼容模式:目前绝大多数的NuGet软件包使用.NET
    Framework,大多数项目被禁止引用到.NET
    Standard项目,因不是所有的项目依赖都支持.NET Standard,这是在.NET
    Standard 2.0中加入兼容模式的原因,使.NET
    Standard项目可以直接引用.NET
    Framework类库。目前70%的Nuget软件包是兼容.NET Standard
    2.0,可能在某些特殊情况下不起会兼容失败,比如:WPF中的.NET
    Framework类库。

  • 平台支持

    • .NET Framework 4.6.1
    • .NET Core 2.0
    • Mono 5.4
    • Xamarin.iOS 10.14
    • Xamarin.Mac 3.8
    • Xamarin.Android 7.5
    • Upcoming version of UWP (预计今年下半年)

图片 1

.NET Standard 2.0 使用指南