.NET Core 3.0 稳定版发布

2019年09月24日

一年一度的 .NET 开发者盛会 .NET Conf 2019 在昨日(举办时间为 9.23-9.25)正式开始了。大会第一天最重磅也是最激动人心的消息莫过于 .NET Core 3.0 稳定版的发布。.NET 项目管理总监 Scott Hunter 在大会宣布了这则消息,并在主题演讲环节围绕 .NET Core 3.0 的新特性和社区展开了介绍。

.NET Conf 2019 直播地址:https://www.dotnetconf.net/

作为一个大版本更新,.NET Core 3.0 引入了大量改进和新特性,例如新增加的 Windows Forms 和 WPF、新的 JSON API、对 ARM64 架构的支持,以及全面提升的性能。对了,C# 8 也是 .NET Core 3.0 本次更新的一部分,其中包括可空引用类型(nullable)、异步流(Async Streams)和更多的模式。

除了 C# 8,.NET Core 3.0 的更新内容还包括 F# 4.7,此版本主要是对语法进行改进,并将目标平台升级至面向 .NET Standard 2.0。

.NET 团队表示 .NET Core 3.0 会兼容之前的版本,所以大家现在就可以将项目升级至 .NET Core 3.0。

下载地址

.NET Core 3.0 的一些“新料”

在深入探究 .NET Core 3.0 的所有新功能之前,先来看看一些重要的改进,其中提及到了 C# 8、F# 4.7、.NET Standard 2.1、在其他发行版上的支持情况等。

要注意的是,如需使用 .NET Core 3.0,请将 Visual Studio 升级至 2019 16.3 版本(Windows 用户)。

  • 在 .NET Core 3.0 稳定版发布前,它已在 dot.net 和 Bing.com 这两个网站上运行了数月,并已通过严格的测试。微软的团队也将很快在生产环境中将工作负载部署到 .NET Core 3.0 上
  • 许多组件的性能都获得了巨大提升,详情可查看介绍 .NET Core 3.0 性能改进的内容
  • C# 8 增加了异步流(async streams)、范围类型和索引类型(range/index)、更多的模式以及可空引用类型。可空引用类型主要用于帮助我们处理无处不在的空引用异常(NullReferenceException),另外,框架库的底层已被注释,编译器会分析代码流,因此我们能查看null值是否可以将其用于当前位置。
  • F# 4.7 主要是通过使用隐式的yield表达式来简化一些操作,以及语法。此外还提供了对LangVersion的支持、新增nameof关键字,和处于预览阶段的静态类。F# 核心库的目标平台为 .NET Standard 2.0,详情点此了解
  • .NET Standard 2.1 增加了可以在代码中使用的类型集,它们也可同时用于 .NET Core 和 Xamarin。
  • .NET Core 现在已为 Windows 桌面应用提供支持同时支持 Windows Forms 和 WPF(已开源)。WPF 设计器已属于 Visual Studio 2019 16.3 的一部分。Windows Forms 设计器则仍处于预览阶段,可从 VSIX 进行下载
  • .NET Core 应用现在默认情况下就具有可执行文件。在之前的版本中,需要通过dotnet命令来启动应用,如dotnet myapp.dll。不过从这个版本开始,我们可以使用特定于应用程序的可执行文件(例如 myapp./myapp, )来启动应用程序,具体取决于操作系统。
  • 新增高性能的 JSON API,用于读取器/写入器、对象模型和序列化方案。这些 API 基于Span<T>从头开始构建,使用 UTF8 来替代 UTF16(如 string),另外由于这些 API 使用了最小化的内存分配,因此带来了更好的性能,减少了垃圾回收器的工作。详情请查看 The future of JSON in .NET Core 3.0
  • 默认情况下,垃圾回收器使用更少的内存。对于许多应用程序托管在同一服务器上的情况,此改进非常有用。此外,新版本中 GC 能更好地利用具有 64 核(或大于)的机器的核心数量。
  • .NET Core 强化了对 Docker 的支持,以使 .NET 应用程序在容器中能按预期且有效地运行。当容器被配置为有限的内存或 CPU 时,垃圾回收器和线程池会更好地进行适应已提供最具优化效果的运行方式。.NET Core 的 Docker 镜像体积也更小 —— 尤其是 SDK 镜像。
  • 支持 Raspberry Pi 和 ARM 芯片,以助力 IoT 开发。其中包括远程 Visual Studio 调试器。这就意味着我们可以使用新的 GPIO API 来部署可监听传感器的应用程序,并在显示器上打印消息或图像。ASP.NET 可用于将数据暴露为 API,或作为一个在 IoT 设备启用配置的站点。
  • .NET Core 3.0 会被 11 月发布的 .NET Core 3.1 取代,因为后者才是 LTS 版本(至少会获得三年的技术支持),不过官方还是建议大家先升级到 .NET Core 3.0,然后再升级到 3.1,这样过渡起来更方便。
  • .NET Core 2.2 将于今年 12.23 到达 EOL 阶段。查看 .NET Core support policy
  • .经过与 Red Hat 的多年合作,.NET Core 3.0 将随 RHEL 8 在 Red Hat Application Streams 中一起提供。
  • Visual Studio 用户如需在 Windows 上使用 .NET Core 3.0,需要升级至 Visual Studio 2019 16.3。
  • Visual Studio 用户如需在 macOS 上使用 .NET Core 3.0,需要升级至 Visual Studio for Mac 8.3。
  • Visual Studio Code 用户则需要使用最新版本的 C# 扩展,以确保最新的方案能够正常工作,包括针对 .NET Core 3.0 的目标平台。
  • .NET Core 3.0 的 Azure App Service 部署目前正在进行中。
  • .NET Core 3.0 的 Azure Dev Ops 部署即将推出。

.NET Core 3.0 支持的平台

  • Alpine: 3.9+
  • Debian: 9+
  • openSUSE: 42.3+
  • Fedora: 26+
  • Ubuntu: 16.04+
  • RHEL: 6+
  • SLES: 12+
  • macOS: 10.13+
  • Windows Client: 7, 8.1, 10 (1607+)
  • Windows Server: 2012 R2 SP1+

要注意的是,Windows Forms 和 WPF 应用仅支持在 Windows 上运行。

对芯片的支持情况如下:

  • x64 on Windows, macOS, and Linux
  • x86 on Windows
  • ARM32 on Windows and Linux
  • ARM64 on Linux (kernel 4.14+)

注意:请确保 .NET Core 3.0 在 ARM64 上的部署使用 Linux Kernel 4.14 或更高版本。例如,Ubuntu 18.04 能满足此要求,但 16.04 却不满足。

WPF 和 Windows Forms

现在我们可以在 Windows 上使用 .NET Core 3 构建 WPF 和 Windows Forms 应用程序了。有关兼容性方面的问题,微软表示大可不必担心,因为他们从一开始就考虑到了这个问题,以使将桌面应用程序从 .NET Framework 迁移到 .NET Core 变得更加容​​易。

下面是官方提供的一个例子,.NET Core Windows Forms App:

Visual Studio 2019 16.3 支持创建面向 .NET Core 的 WPF 应用程序,这包括新模板以及更新的 XAML 设计器和 XAML Hot Reload。

下图展示了使用新设计器开发的 WPF 应用程序:

不过 Windows Forms 设计器目前尚处于预览阶段,可从此处单独下载。微软表示会在未来发布的 Visual Studio 中集成 Windows Forms 设计器。

相关链接

展开阅读全文
31 收藏
分享
加载中
精彩评论
这次支持一下微软
2019-09-24 14:22
17
举报
希望.net core以后可以支持Linux GUI程序。
2019-09-24 18:03
10
举报
有点想离开肿的像猪一样的java,重新回到.net怀抱
2019-09-25 09:45
6
举报
我发的新闻被驳回了。。。支持一下这个吧
2019-09-24 17:25
6
举报
直接把人家英文原文复制过来就提交,意义何在?
2019-09-25 14:45
2
举报
最新评论 (58)
已经很不错了,桌面可以使用mono跨平台。php的桌面gtk,尴尬。
2019-09-25 20:36
0
回复
举报
.NET Core 3.0 的 WinForm少了许多重量级控件,基本上只能做些小工具。
2019-09-25 15:30
0
回复
举报
有些人的逻辑真的很搞笑。就好比开丰田的对大众车恨之入骨一样莫名其妙。关键是即便大众破产了,从地球上消失了。大众里的老司机转开丰田依旧很6,丰田里的菜鸟依旧是菜鸟。
2019-09-25 13:07
1
回复
举报
丰田里的老司机笑而不语😃
2020-07-04 21:48
0
回复
举报
give me five.
2019-09-25 12:33
0
回复
举报
虽然晚了点,好歹走在了对的路上
2019-09-25 11:17
0
回复
举报
我也安装了.net core 3.0正式版,vs 2019也升级到19.3,为什么看不到win forms和wpf的设计器啊
2019-09-25 10:11
0
回复
举报
需要单独下载
2019-09-25 10:17
0
回复
举报
Thank you!
2019-09-25 10:23
0
回复
举报
wpf没有设计器可能是bug,https://github.com/dotnet/core/issues/3439
winform设计器 需要下载安装,https://aka.ms/winforms-designer (现在是预览版)
2019-09-25 10:48
0
回复
举报
wpf设计器:工具 - 选项 - 环境 - 预览功能 - “使用.NET Core SDK 预览版(需要 重启)”
2019-09-25 20:00
0
回复
举报
终于来了。。。
什么时候支持Rust啊?
我配了几天,无数大佬支持
还是在VS和vsc里面调试不起来Rust。
2019-09-25 10:00
1
回复
举报
有点想离开肿的像猪一样的java,重新回到.net怀抱
2019-09-25 09:45
6
回复
举报
说实话,写代码写C# 比写Jva 爽的不是一丢丢,而是好很多!
2019-09-25 12:36
0
回复
举报
你可以用kotin
2019-09-25 16:54
1
回复
举报
其实我已经用了一阵scala了
2019-09-27 10:41
0
回复
举报
搞来搞去,最大的改变是增加了.NET原来就有的只支持Windows桌面的UI库的支持.
绕了一圈,还不是回到原地,真是闲得蛋疼.
2019-09-25 09:35
1
回复
举报
看都没看。也没用过就喷。 你部署过.net core 在linux上。 用.net core 做过中台吗? 做过连接硬件吗?
2019-09-25 09:44
2
回复
举报
已经很不错了,桌面可以使用mono跨平台,比PHP桌面GTK好多了吧。。
2019-09-25 20:41
0
回复
举报
谁会拿PHP做桌面应用开发?
dotNET要比也是跟Java比,人家Java的Swing/SWT等库都是跨平台.
而且还有JetBrains/Eclipse/NetBeans这些IDE背书.
2019-09-30 09:58
0
回复
举报
呵呵 傻了吧 弱项不敢让说
2019-09-30 12:03
0
回复
举报
如果wpf不支持跨平台,以后微软会不会再次后悔。。。
2019-09-25 07:54
0
回复
举报
不是说支持就能支持的,很多技术问题没法跨啊
2019-09-25 08:17
0
回复
举报
要是支持就真的完美无敌。
2019-09-25 08:54
0
回复
举报
可以跨。以前xamarin的负责人说过wpf 可以跨平台。问题是需要很多精力跟金钱去解决, wpf依赖win的gdi跟dx,问题是工控软件一直都是在win上运行。在mac 上成本太高。在linux上运行。很多普通大众不会用linux,而且微软也不会干这种吃力不讨好的事情。 .net core 跨平台主要是服务端。 整合微软云服务容器。
2019-09-25 08:59
0
回复
举报
现在桌面日渐式微,都转网页开发了
2019-09-25 08:58
0
回复
举报
你想多了。 其实工控软件才是最难的。 我在长沙见过工控软件的工资普遍比网页后端高。还很难招到人。 因为那东西涉及到跟硬件结合。
2019-09-25 09:02
0
回复
举报
可以跨吧,无非针对操作系统实现一遍规范而已
2019-09-25 09:42
0
回复
举报
你不怕他支持了会更后悔?
2019-09-25 10:03
1
回复
举报
更多评论
58 评论
31 收藏
分享
在线直播报名
返回顶部
顶部