您的位置:时时app平台注册网站 > 彩世界网址 > 使用Api解析器与Windows包容包来编排智能的跨平台

使用Api解析器与Windows包容包来编排智能的跨平台

2019-09-15 02:01

.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:UsersscottDesktopsupercr

ossplatappsupercrossplatapp.csproj]

  supercrossplatapp -> C:supercrossplatappbinDebugnetcoreapp2.0supercrossplatapp.dll

Build succeeded.

.NET团队的Olia做了多个很好的YouTube录像,她的录像突显了API分析器是如何行事的。API深入分析器的代码已经上传到Github。假设您开采了bug请在上头提issue!

彩世界网址 1

发布NuGet包

当类库开垦实现,能够将其公布成NuGet包,在VS中,右键项目选拔属性(Properties),在选项卡中找到Package,选中Generate NuGet package on build

彩世界网址 2

在命令行工具情状下,编辑项目文件添加GeneratePackageOnBuild设置值为true

<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
</PropertyGroup>

编写翻译项目,在出口目录中会找到变化的NuGet包。

运用Api深入分析器与Windows兼容包来编排智能的跨平台.NET Core应用,api剖判器

正文翻译自斯科特 汉斯elman博客:

正文:

那是这两日这几周你应有理解的一对.Net Core界的优异工具。大家在编辑或许移植跨平台代码时,它们非常有赞助。

.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:UsersscottDesktopsupercr
ossplatappsupercrossplatapp.csproj]
  supercrossplatapp -> C:supercrossplatappbinDebugnetcoreapp2.0supercrossplatapp.dll

Build succeeded.

.NET团队的Olia做了二个很好的YouTube录制,她的摄像体现了API剖析器是哪些做事的。API分析器的代码早就上传到Github。若是你意识了bug请在上边提issue!

选定现成.NET Framework类库

.NET Standard 2.0 提供包容形式,未来拉长一个非.NET Standard类型的NuGet包,如要增添NuGet包为:Huitian.PowerCollections,在VS中右键项目mylibrary,选择Manage NuGet Packages.,然后采取Browse,搜索Huitian.PowerCollections,在结果中找到包并点击安装。

一声令下行增多Nuget包

dotnet add package Huitian.PowerCollections

设置完包后,将体现以下警告:

NU1701: Package ‘Huitian.PowerCollections 1.0.0’ was restored using ‘.NETFramework,Version=v4.6.1’ instead of the project target framework ‘.NETStandard,Version=v2.0’. This package may not be fully compatible with your project.

这段警告不仅仅在装置包时提醒,在历次创设时都会指示。

警戒现身的来由是因为NuGet不恐怕明确.NET Framework类库是不是能够完全正常干活。比方,它或者依附于Windows Forms(不跨平台)。提议测量试验应用程序,借使具备成效都按预期专门的学业,您能够阻止警告。

编排项目文件中包引用配置,增添NoWarn属性:

<ItemGroup>
    <PackageReference Include="Huitian.PowerCollections" Version="1.0.0" NoWarn="NU1701" />
</ItemGroup>

地点的布局是将Huitian.PowerCollections(版本:1.0.0)包引用时发生的警告名称叫NU1701设置为不提示。

在VS中直接在包的属性中打开设置

彩世界网址 3

再一次编译,不再升迁警示新闻。注意:配置只针对各类援引包,不是全局的。因而,即使援引了另叁个急需相配方式的库,将再次取得警示,要求对该包进行独立设置。

.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 斯坦dard找不到的事态。那时,这一个新的NuGet包Microsoft.Windows.Compatibility(预览),它可以提供原先只在.NET Framework可用的API。

在那么些兼容包里面包车型地铁API会富含两系列型。一种是其一API原先就是Windows的一有个别,可是也足以跨平台职业。其他一种是不得不在windows下办事,因为她们是操作系统特有的。比如,API访谈WIndows注册表那是Windows下独有的。不过System.DirectoryServices或许System.Drawing他们却足以在其他平台都干活的很好。Windows包容包在.NET Core今后可用Api的基础上增产呢三千0多少个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 发表日期:前年1月十三日
布告最早的文章地址

正文翻译自Scott 汉斯elman博客:

总结

.NET Standard 2.0 帮忙API数量是 .NET Standard 1.x 的两倍多,那意味着大家将.NET Framework 中的代码移植到.NET Standard变得尤为贯虱穿杨,其它通过相称形式在.NET 斯坦dard类库中能够援引.NET Framework项目或类库,这样允许在尚未将全体代码移植到.NET Standard的情景下高速利用现成类库。(提供一个连片格局,尽管代码未有实践到不援助的API是不会出错的。)

差非常少全体.NET平台都帮助 .NET Standard 2.0,包含.NET Framework, .NET Core, 和 Xamarin(前身是Mono),UWP在2019年稍后的时日会支撑。全数那么些达成得益于新增添的API以及包容格局,特别是.NET Core和UWP,他们从前只可以利用多少个受限的API集。

提议你将装有的事体逻辑和UI中依赖的代码转变到.NET Standard,能有限协助您的工作逻辑能够在别的平台被复用,比如桌面应用、移动应用、云应用。

正文:

更多参谋资料

  • .NET Standard 2.0新扩大命名空间
  • .NET Standard documentation
  • .NET Standard API

那是近期这几周你应当通晓的一对.Net Core界的精良工具。大家在编写恐怕移植跨平台代码时,它们特别有扶持。

使用.NET Standard类库

在动用类库此前,须要创建多少个品种。创设一个空ASP.NET Core项目。在VS中,创设项目时在.NET Core分类中精选ASP.NET Core Web Application,选中ASP.NET Core 2.0,类型为Empty。

命令行成立

dotnet new web -o aspnetcore

使用.NET Standard类库的法子和行使别的类库同样,只须求在品种中加上援用。在VS中右键项目,点击增添/引用,然后在类型(Projects)选项卡中选取mylibrary。

命令行方式为品种增进援用

dotnet add reference ../mylibrary/mylibrary.csproj

Startup.cs文本,增添代码

app.Run(async (context) =>
{
    var message = mylibrary.Class1.GetMessage();
    await context.Response.WriteAsync(message);
});

在VS中F5运行。

命令行工具运营

$ dotnet run
Now listening on: http://localhost:50878
Application started. Press Ctrl C to shut down.

运转效果

彩世界网址 4

恭贺!创制的.NET 斯坦dard 2.0类库在.NET Core中调用成功。一样也能够在 .NET Framework或Xamarin等不等门类的行使中动用,方式同样。

.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 斯坦dard特其余炫酷,因为它辅助如下平台:

  • .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的拦Land Rover,那么将来您能够借助包容包,耶!可是你要明了您为啥供给迁移到.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社区沸腾了,期待已久的.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,下载地址。

增加补充:关于可移植类库(Portable Class Libraries)

.NET 斯坦dard 2.0宣布之后,在.NET项目中国共产党享代码,不再推荐应用PCL类库,有相当的大希望前面会抛弃,假诺今后应用PCL应该移植为.NET 斯坦dard类库。

.NET Standard 2.0 天性介绍

  • 代码分享:.NET 斯坦dard是API会集,更是代码完成正式,全部.NET达成必需符合该规范,幸免代码碎片化。.NET Standard被设计用来作为代表可移植类库Portable Class Libraries(PCL)的营造筑工程具。

  • API扶助:在.NET Standard 2.0中API帮忙数量净增,包括API数量为3三千个,.NET Standard 1.6 中API数量为13000个,近日停止已经饱含.NET Framework中的当先1/3APIs,那意味能够轻巧地将长存代码移植到.NET Standard,进而使现成代码协助基于.NET Standard实现的别样平台,参看平台帮忙列表。

  • .NET Framework包容形式:这几天好些个的NuGet软件包使用.NET Framework,大非常多项目被取缔援用到.NET Standard项目,因不是颇具的项目正视都援助.NET 斯坦dard,那是在.NET Standard 2.0中投入包容情势的彻彻底底的经过,使.NET Standard项目得以直接援用.NET Framework类库。近来七成的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 (揣测今年下5个月)

创建.NET Standard类库

由此创办三个新品类来推行一下,在VS中 文件 | 新项目 选拔.NET Standard分类找到 Class Library (.NET Standard),项目名称叫mylibrary

彩世界网址 5

也可以经过命令行dotnet new成立贰个类库(私下认可使用.NET Standard)

dotnet new lib -o mylibrary

为了让那个类库特别意义,编辑文件Class1.cs as,加多一行逻辑代码。

using System;

namespace mylibrary
{
    public class Class1
    {
        public static string GetMessage() => "Hello from .NET Standard!";
    }
}

.NET Standard 2.0 使用指南

本文由时时app平台注册网站发布于彩世界网址,转载请注明出处:使用Api解析器与Windows包容包来编排智能的跨平台

关键词: