.NET Core 2.0 特性介绍和使用指南

article/2025/6/8 19:53:02

前言

这一篇会比较长,介绍了.NET Core 2.0新特性、工具支持及系统生态,现状及未来计划,可以作为一门技术的概述来读,也可以作为学习路径、提纲来用。

对于.NET Core 2.0的发布介绍,围绕2.0的架构体系,我想通过一个系列来全面介绍:

  1. .Net大局观(2).NET Core 2.0 特性介绍和使用指南(已发布)

  2. .Net大局观(3)ASP.NET Core 2.0 特性介绍和使用指南

  3. .Net大局观(4)Entity Framework Core 2.0 特性介绍和使用指南

.Net大局观(2).NET Core 2.0 特性介绍和使用指南(已发布)

.Net大局观(3)ASP.NET Core 2.0 特性介绍和使用指南

.Net大局观(4)Entity Framework Core 2.0 特性介绍和使用指南

.NET Core 2.0发布最终版,基于.NET Core 2.0开发的项目可以放心用于生产环境。.NET Core 2.0开发不受开发工具影响,安装SDK之后便可以使用命令行工具,Visual Studio Code或者你喜欢的文本编辑器编写代码发布项目,当然对于重量级IDE需要更新到最新版:Visual Studio 2017 15.3、Visual Studio for Mac 7.1。

注意:VS 2017 15.3并没有包含SDK,需另外单独安装.NET Core 2.0 SDK。

注意:VS 2017 15.3并没有包含SDK,需另外单独安装.NET Core 2.0 SDK。

个人更喜欢使用轻量级编辑器Visual Studio Code,对我而言更新Visual Studio 2017 15.3是一项不小的工程,但是这个最新版本提供的单元测试Live Unit Testing功能,是其他IDE不能相比的,这会成为TDD开发者的最爱!

个人更喜欢使用轻量级编辑器Visual Studio Code,对我而言更新Visual Studio 2017 15.3是一项不小的工程,但是这个最新版本提供的单元测试Live Unit Testing功能,是其他IDE不能相比的,这会成为TDD开发者的最爱!

.NET Core 2.0进行了多项重要改进,这使得.NET Core 2.0更加具备作为平台的能力。本文总结了.NET Core 2.0最新特性,详细改进细节,可以参考GitHub Issues:dotnet/core #812。

特性概述 Runtime(运行时)

  • 运行时和框架的主要提升性能

  • 实现.NET Standard 2.0

  • 更多的发行版,新增6个平台支持,包含Debian Stretch, SUSE Linux Enterprise Server 12 SP2, 和 macOS High Sierra.

  • RyuJIT is the x86 JIT in .NET Core 2.0

  • Linux 和 Windows ARM32 构建版已经发布预览

运行时和框架的主要提升性能

实现.NET Standard 2.0

更多的发行版,新增6个平台支持,包含Debian Stretch, SUSE Linux Enterprise Server 12 SP2, 和 macOS High Sierra.

RyuJIT is the x86 JIT in .NET Core 2.0

Linux 和 Windows ARM32 构建版已经发布预览

  • dotnet restore现在是一个隐式命令(需要的时候自动执行)

  • .NET Core 和 .NET Standard项目可以引用.NET Framework NuGet包、项目和程序集。

  • .NET Core SDK 可以进行源码编译,编译代码和脚本参看source-build repo

dotnet restore现在是一个隐式命令(需要的时候自动执行)

.NET Core 和 .NET Standard项目可以引用.NET Framework NuGet包、项目和程序集。

.NET Core SDK 可以进行源码编译,编译代码和脚本参看source-build repo

  • 支持.NET Core项目Live Unit Testing

  • 代码导航的改进

  • C# Azure 函数支持

  • CI/CD 支持容器

支持.NET Core项目Live Unit Testing

代码导航的改进

C# Azure 函数支持

CI/CD 支持容器

首先请安装.NET Core SDK 2.0。(SDK中已经包含Runtime)

安装完成之后就可以使用命令行或Visual Studio创建.NET Core 2.0应用程序了。

创建新项目是极其简单的操作,在Visual Studio 2017可以使用提供的项目模板,也可以使用命令dotnet new执行命令创建:

C:samples>dotnet newconsole-o console-appC:samples>cd console-appC:samples console-app>dotnet runHello World! 项目和类库升级

可以将现有程序升级到 .NET Core 2.0。在Visual Studio中,更改目标框架为 .NET Core 2.0。

如果使用Visual Studio Code或者其他代码编辑器,手动编辑项目文件将目标框架改为netcoreapp2.0

<PropertyGroup><TargetFramework>netcoreapp2.0</TargetFramework></PropertyGroup>.NET Core 2.0和1.0/1.1之间的关系

三个版本是独立的,且可可以共存,并分别使用对应的运行时,项目不会自动升级,除非设置了对应的版本。

开发环境下,安装了多个SDK版本,默认使用最新的版本,在安装完.NET Core 2.0 SDK之后,用于所有新创建的项目,指定为1.0和1.1版本的项目仍然使用对应版本运行时。

在项目中添加global.json配置文件,可以指定使用特定的SDK版本。

.NET CORE Rumtime改进

有以下主要改进

性能改进

在.NET Core 2.0中有多项性能改进,开发团队发布了一系列文章说明.NET Core Runtime改进的细节:

  • Performance Improvements in .NET Core

  • Performance Improvements in RyuJIT in .NET Core and .NET Framework

  • Profile-guided optimization in .NET Core 2.0

Performance Improvements in .NET Core

Performance Improvements in RyuJIT in .NET Core and .NET Framework

Profile-guided optimization in .NET Core 2.0

.NET Core 2.0实现了.NET Standard 2.0规范。

参看diff between .NET Core 2.0 and .NET Standard 2.0理解.NET Core 2.0提供API和.NET Standard 2.0规范。

将Linux作为单个操作系统更容易实现

.NET Core 2.0将Linux作为单个操作系统来对待。(Linux的版本很多,这项支持意味着在我们眼中不同的版本都是Linux,无视差异,提高Linux系统上的兼容性。)现在有一个单独的Linux构建(基于芯片架构的构建),它适用于测试过的所有Linux发行版。到目前为止,支持仅限于基于glibc的发行版,特别是基于Debian和Red hat的Linux发行版。

计划还将支持更多其他的Linux发行版。

Windows和macOS也有类似的改进。您现在可以将项目发布为以下的“运行时”:

  • linux-x64, linux-arm

  • win-x64, win-x86

  • osx-x64

linux-x64, linux-arm

win-x64, win-x86

osx-x64

.NET Core开发团队正在为.NET Core 2.0+开发ARM32构建支持。

这些构建非常适合在树莓派使用。这些构建还没有正式发布,现在只是预览版。提供为.NET Core 2.0 生成ARM32 Runtime(没有SDK)。因此,需要在另一个操作系统上构建应用程序,然后复制到树莓Pi(或类似的设备)上运行。

下面是两个非常棒的 .NET Core ARM32开发实例:

  • .NET Core on Raspberry Pi

  • .NET Core Docker Samples

.NET Core on Raspberry Pi

.NET Core Docker Samples

.NET Core 2.0包含新的opt-in globalization mode,提供与操作系统和语言一致的基本的全球化相关功能。这种新模式的好处在于它的一致性、没有任何全球化依赖。

参看.NET Core Globalization Invariant Mode了解更多关于这个特性的信息.

.NET Core SDK 改进

下面是主要改进

dotnet restore 调整为隐式命令

在需要的时候会自动调用,dotnet restore是命令中使用频率较高的,用于项目引用更新时,恢复依赖的引用包,尽管没有更新时会有提示执行,但这非常容易忘记。

现在,当我们执行命令,如:run,build,publish时,会自动调用dotnet restore。

下面的示例演示

C:Usersrich>dotnet newmvc -o mvcappThe template "ASP.NET Core Web App (Model-View-Controller)"was created successfully.This template contains technologies from parties other than Microsoft, see https://aka.ms/template-3pn for details.Processing post-creation actions...Running 'dotnet restore'on mvcappmvcapp.csproj...Restoring packages forC:Usersrichmvcappmvcapp.csproj...Restore completed in32.3ms forC:Usersrichmvcappmvcapp.csproj.Generating MSBuild file C:Usersrichmvcappobjmvcapp.csproj.nuget.g.props.Generating MSBuild file C:Usersrichmvcappobjmvcapp.csproj.nuget.g.targets.Restore completed in2.26sec forC:Usersrichmvcappmvcapp.csproj.Restore succeeded. C:Usersrich>cd mvcapp C:Usersrichmvcapp>dotnet runHosting environment:ProductionContent root path:C:UsersrichmvcappNow listening on:http://localhost:5000Application started. Press Ctrl+C to shut down.Application is shutting down...

创建项目后,会自动调用dotnet restore命令。

在.NET Standard项目中引用.NET Framework类库

这个功能将帮助我们将.NET Framework 快速迁移到.NET Standard或.NET Core,在迁移的过程中,先直接使用,那么随着时间的推移(从二进制文件开始,然后移动到源代码)迁移整个项目。

这个功能也为.NET Framework类库提供一个新的运行框架支持。

引用.NET Framework类库之后,类库中的类型仅限于使用在.NET Standard API集合中支持的类型,所以要谨慎对待,进行完整测试。

类库支持.NET Framework 4.6.1,或更早的版本,甚至包括1.0的版本。下图展示了这项功能的使用:

从应用程序的调用堆栈可以看出程序集的目标框架。

.NET Standard NuGet包无需任何依赖

类库的框架目标设置为 .NET Standard 2.0 或更高的版本,将无需任何依赖,底层依赖直接由.NET Core SDK提供。

下面是目标框架为.NET Standard 2.0的NuGet包配置文件:

<?xml version="1.0" encoding="utf-8"?><packagexmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd"><metadata><id>ClassLibrary1</id><version>1.0.0</version><authors>ClassLibrary1</authors><owners>ClassLibrary1</owners><requireLicenseAcceptance>false</requireLicenseAcceptance><deion>Package Deion</deion><dependencies><grouptargetFramework=".NETStandard2.0"/></dependencies></metadata></package>

下面是目标框架为.NET Standard 1.4的NuGet包配置文件:

<?xml version="1.0" encoding="utf-8"?><packagexmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd"><metadata><id>ClassLibrary1</id><version>1.0.0</version><authors>ClassLibrary1</authors><owners>ClassLibrary1</owners><requireLicenseAcceptance>false</requireLicenseAcceptance><deion>Package Deion</deion><dependencies><grouptargetFramework=".NETStandard1.4"><dependencyid="NETStandard.Library"version="1.6.1"exclude="Build,Analyzers"/></group></dependencies></metadata></package>Visual Studio 2017 15.3 更新 SDK并行支持

最新版本的VS,可以识别最新的.NET Core SDK,并且应用相关的工具。15.3版本中Visual Studio对.NET Core SDK提供并行支持,即在创建新项目时,默认使用安装的最高.NET Core SDK版本,同时允许您在需要时通过使用global.json来指定和使用旧版本。

这样可以使用VS构建针对不同.NET Core版本的应用。

Visual Basic 支持

除了支持C#和F#,15.3现在还支持使用Visual Basic来开发.NET Core应用程序。

Live Unit Testing 支持

Live Unit Testing (LUT)是Visual Studio 2017企业版中一项新功能,在15.3中支持.NET Core应用程序。热爱测试驱动开发(TDD)的用户肯定会喜欢这个新功能。

启用步骤非常简单:Test->Live Unit Testing->Start

如下图所示,当我们启用LUT,可以在代码编辑器中实时查看单元测试覆盖和测试结果反馈,注意左边的测试用例和右边的被测试代码。(这个好!)

IDE生产力增强

Visual Studio 2017 15.3提供多项生产力增强功能,帮助更快写出更好的代码。现在支持通过EditorConfig设置.NET命名规范和格式化规则,这样允许您的团队执行和配置几乎所有代码的编码约定。(团队开发统一代码规范的痛点得到解决!赞!)

代码导航改进:添加GoToAll(Ctrl+T)支持camelCase匹配(大写简称匹配),只需要输入缩写,可以导航到任意文件、类型、成员定义,比如:bh将会搜索到BusHelper.cs。

在下图中还可以看到建议的变量名,变量名遵循编辑器配置中的代码规范:

新增部分重构功能:

  • 解决合并冲突(Resolve merge conflict)

  • 添加参数(根据调用方法推断)

  • 生成重载(overrides)

  • Add named argument

  • Add null-check for parameters

  • Insert digit-separators into literals

  • Change base for numeric * literals (e.g., hex to binary)

  • Convert if-to-switch

  • Remove unused variable

解决合并冲突(Resolve merge conflict)

添加参数(根据调用方法推断)

生成重载(overrides)

Add named argument

Add null-check for parameters

Insert digit-separators into literals

Change base for numeric * literals (e.g., hex to binary)

Convert if-to-switch

Remove unused variable

对项目文件.csproj进行优化,移除部分不需要的元素。从下图可以看到项目的依赖项进行分类,结构更加清晰。

另一个针对.NET Core项目系统的增强是项目编译更加高效。

Docker支持

.NET Core 2.0项目可以更好的支持Docker:

  • Docker latest tag moved to .NET Core 2.0

  • microsoft/dotnet Docker Hub README adopted segmented OS/Arch style

  • Linux ARM32 Docker images are now available.

  • .NET Core 2.0 multi-arch tags now use Debian Stretch

  • .NET Core Docker images use multi-arch based tags

  • .NET Core supports Multi-Stage Build

Docker latest tag moved to .NET Core 2.0

microsoft/dotnet Docker Hub README adopted segmented OS/Arch style

Linux ARM32 Docker images are now available.

.NET Core 2.0 multi-arch tags now use Debian Stretch

.NET Core Docker images use multi-arch based tags

.NET Core supports Multi-Stage Build

.NET Core 2.0可以应用于生产环境。

微软有两个支持级别:长期支持(Long Term Support-LTS)和当前版本(Current release)。LTS版本有三年的支持,而当前版本更短,通常在一年左右,甚至可能更短。当前版本又被称为“快速跟踪支持”。.NET Core 1.0 and 1.1 是LTS版。

.NET Core 2.0是当前版本支持,正在等待质量和可靠性的反馈,然后会转到LTS支持。一般来说,在发布LTS版时,要确保该版本处于只需要为它提供安全修复的阶段,一旦你部署了一个带有LTS版本的应用程序,就不应该更新它,至少不会因为平台而更新。

Red Hat完全支持.NET Core,会很快发布相应的版本,可以查看这个网站RedHatLoves.NET查看。

还记得这些图片吗?微软高调示爱Linux

当然,爱是相互的,微软用了三年时间终于也收获了被爱的感觉,技术的最终方向是:融合,感动O(∩_∩)O~!

最后

2.0 是.NET Core一个重要的里程碑版本,让人感到非常兴奋!2.0不仅是目前所有.Net框架中最快的版本,同时.NET Standard 2.0也实现了承诺:让.NET无处不在。结合Visual Studio家族,.NET Core为开发人员在Windows、MacOS以及Linux系统提供最高效的开放平台。

写给自己的话

写文章真是一件耗费脑力和体力的事情,对这篇文章的整理和编辑持续两天才完成,计算下大概耗时4小时,感觉写代码爽多了,可能还没适应写东西,但是我会坚持更新完这个系列。希望更多人第一时间了解.NET Core!

原文地址:http://www.cnblogs.com/YGYH/p/7379461.html


http://www.hkcw.cn/article/XwlGmOBQNR.shtml

相关文章

在任18年的“最牛协会会长”正式卸任,河南省酒业协会熊玉亮时代结束,但他已创造一个传奇

大河报豫视频记者 霍坤峰 熊玉亮为河南省酒业协会七届、八届理事会会长。5月31日,河南省酒业协会第九次会员大会召开,其中最重要的一个环节是换届选举。当天,熊玉亮围绕任期内所做的工作做了40分钟的工作报告,多次赢得热烈的掌声。河南省酒业协会第九届理事会领导班子名单公…

朝九晚五 发车僧侣 日本人这么喜欢玩和尚?

老方丈带带我《与僧侣交合的色欲之夜》宣传视频公开眼着四月新番就要到来了,不知道大家有没有确定好要追哪部作品了呢。而要说到在这个季度的新番中的一些特别奇葩的存在,那就必须要提到下面这部叫做与僧侣交合的色欲之夜的泡面番了。而这两天,这部动画也公开了自己的全新宣…

“韩国第一爵士女伶”罗玧宣全新专辑《清醒的世界》,有史以来最接近真实自我的一次演唱!

2 0 2 2罗玧宣全新专辑《清醒的世界》(Waking World) 今年,韩国爵士天后罗玧宣发行了她的最新专辑《清醒的世界》(Waking World)收录11首由罗玧宣创作的全新风格歌曲,是绝美发烧女声的示范,带你领略从未碰上的迷人爵士韵味,令人一听难忘。 罗玧宣-Waking World MV 对罗…

影视剧中武功高强的太监,图5被自己弟弟杀死,图8是女主父亲

苏文:出自电视剧《乌龙闯情关》。这部电视剧可是我童年的记忆呀!苏文原本的武功就很高,后来练错易筋经走火入魔,即使练错了方向也被他练到了第二层易筋经。苏文最终与霍水仙一起掉下山崖,尸骨无存,但霍水仙没死。当初在荧屏上见到苏文,真是恨他恨得咬牙切齿。金独异:出…

光通量-LM-80试验测试介绍

光通量概述 光通量是衡量光源发光总量的物理量,通常用流明(lm)来表示。它反映了光源在可见光谱范围内的发光能力,与紫外或红外辐射无关,因为这些辐射对光通量没有贡献。技术深度解析 在物理学中,流明是特定波长下1瓦特辐射功率产生的光量。以555纳米波长为例,1瓦特辐射功…

揭秘!神秘组织光明会背后的真相

一、引言 在这个信息爆炸的时代,人们对未知事物的好奇心愈发强烈。而今天我们要探讨的话题,正是这样一个充满神秘色彩的组织——光明会。尽管它的存在一直饱受争议,但却始终吸引着人们的关注。那么,这个被称为“光明会”的组织究竟是怎么来的?为什么有人愿意加入呢?接下来…

点指名犬——古老、神秘的风之骄子,阿富汗猎犬

来自AKC★气质:独立、甜美 ★身高:25-27英寸 ★体重:50-60磅 ★预期寿命:12-18岁 ★组别:猎犬组 阿富汗猎犬是所有犬种中最引人注目的一种,它是一个冷漠高贵的贵族,拥有令人赞叹的美丽。尽管阿富汗有着高贵的外表,但它会表现出讨人喜欢的愚蠢和深挚的忠诚。关于阿富汗猎…

躺瘦!厦门这个11年「专业修身品牌」,1V1解锁30天管家式瘦身体验!

运动?太累、难坚持! 节食?挨饿、难控制! 吃药?伤身、不健康! 2999元的燃力塑形计来拯救你了! 30天管家式瘦身计划! “冲啊!姐妹们!”2009年入驻厦门,美容、塑形与健康调理的专业度,在业内拥有极高口碑! 国际顶尖设备,专业娴熟的技术,温馨舒适的服务环境,经验…

到底有没有神仙道私服?原来和神仙道手游公益服无限元宝一样啊!

神仙道私服到底有没有啊? 神仙道私服确实是真的存在吗? 神仙道私服和神仙道手游公益服一样无限元宝啊? ​ ​ 神仙道这个IP相信大多数的玩家都知道,从最开始的网页端,到后来多个版本的更新,现在神仙道手游的热度也是相当不错的,当然了不管是从端游还是到手游小编依然…

甄妮铁肺天后,半生守寡育女,女儿生父终揭秘,背后母爱有多深?

乐坛传奇甄妮,以她那震撼人心的铁肺嗓音征服了无数听众,然而她的个人生活却同样波澜壮阔。面对丈夫傅声的突然离世,甄妮选择成为铁娘子,独自扛起抚养女儿的重任,同时用歌声传递力量,治愈自己,也温暖了无数粉丝的心。她以非凡的毅力,在音乐的疆场上继续驰骋,用作品诉说…

揭秘2024年春节日期!

随着新年的临近,大家都对2024年的春节充满了期待。由于今年的特殊情况,大家的关注点都放在了2024年春节的日期上。那么,2024年春节究竟是哪一天呢?让我们一起来看看。 2024年春节是每年的农历正月初一,也就是公历的2月1日。这一天对于中国人民来说具有重要意义,因为它是一…

下篇|说说无锁(Lock-Free)编程那些事

6.3 How Memory Barriers? memory barrier的语义在不同CPU上是不同的,因此,想要实现一个可移植的memory barrier的代码需要对形形色色的CPU上的memory barrier进行总结。幸运的是,无论哪一种cpu都遵守下面的规则: ``` [1]、从CPU自己的视角看,它自己的memory order是服从…

PCP气枪Leshiy威力不大,为何却粉丝无数?看看这外形

Leshiy是一款紧凑型,高精度,可折叠的PCP气枪,由俄罗斯气枪公司Edgun研发设计并制造。Leshiy在德国的IWA Show 2016上展出后正式面向市场。Leshiy尽管是一把PCP气枪,但其杀伤力也是不容小觑的,单从其设计上,就远远超过了很多类型的步枪。从产品的设计到做工,都是一丝不苟…

计算机数据备份哪个方法好?推荐六个好用且不难的方法

在这个智能化办公时代,计算机里面通常存储着大量的重要数据,例如:照片、文档、视频、音频、部分重要资料等。然而,随着使用时间的日益流逝,也可能因为病毒攻击、硬件故障、操作失误以及其它突发情况,导致这些重要的数据出现丢失情况。因为,为了从源头上与类似的问题发生…

山西财经大学2021届毕业生秋季就业洽谈会邀请函

山西财经大学2021届毕业生秋季就业洽谈会邀请函尊敬的贵单位负责同志: 非常感谢贵单位多年来对我校毕业生就业工作一如既往的支持和配合! 为做好2021届毕业生就业工作,进一步加强与用人单位的交流合作,满足贵单位对优秀人才的需求,搭建用人单位和毕业生“双向选择”的平台…

即将开通!广州地铁3号线东延段,全线运营调试

琶小派日志 打工人注意啦! 地铁3号线东延段 新进展来啦 一起了解↓ 2024年6月5日 进度99%! 这条地铁进入运营调试阶段! 近日 随着一把“金钥匙” 从建设单位移交给运营单位 广州地铁三号线东延段 全线车站顺利完成“三权”移交 至此,全线车站、轨行区均已 正式进入运营调试…

E-learning及移动学习:三分屏课件的合理性及其缺陷

所谓三分屏课件,是由专门的三分屏录制软件录制而成的多媒体课件。 由于该软件把计算机屏幕分为板书显示区、视频播放区和课件 目录区三个部分,故称为三分屏课件。其中板书显示区通常采用PowerPoint 软件制作,因而也称为PPT文档显示区。如图1所示。从图1中容易看出三分屏课件…

【中国100大杰出皇帝】之5:汉景帝刘启(守成之君)

汉景帝刘启(前188年-前141年),是汉文帝与窦皇后之子。公元前188年,刘启出生于长安,是汉朝的第五位皇帝。他在位期间,继续推行与民休息、轻徭薄赋的政策,使得汉朝经济进一步发展,社会稳定,人民安居乐业,但守成有余,开拓不足,守住了汉文帝的大好局面,却一味向突厥委…

原创16种好吃的面条做法大全,果断收藏吧!

对面条而言,自己可能也搞不清楚喜欢和谁在一起,因为它和谁一起似乎都是一道美味,时而浓烈,时而香甜,如果我是面条,看基友们各自争宠就好啦! 一、炸酱面主料:面、颈背肉250g 辅料:豆瓣酱3大匙、油3汤匙、葱姜几片、老抽1汤匙,八角1个、黄瓜,胡萝卜,心里美萝卜、绿豆芽…

HTML5网页游戏设计 | 教学大纲(理论36+上机10学时)

✦ 教学大纲 ✦ 1 课程基本情况及教学目标 1. 课程介绍 本课程是本科软件工程专业和数据科学与大数据技术专业拓宽专业任选课。课程内容主要包括HTML标签、Java、Canvas API画图、CSS3和jQuery以及HTML5流行的游戏引擎lufylegend等部分。 2.课程目标 学生通过本课程的学习,熟…