• .NET5发布


    .NET Conf 2020于2020年11月10日举行,会上正式发布.NET 5。.NET 5是.NET平台统一的第一个版本。

    .NET 5 SDK和Visual Studio 2019 v16.8版本在11月10日已经提供下载,更新Visual Studio 2019 版本至v16.8以支持.NET 5。

    此次更新,更新了很多重要功能。包括但不仅限于以下内容:

    1、C# 9.0

    1. 记录
    2. 仅限 Init 的资源库
    3. 顶级语句
    4. 模式匹配增强功能
    5. 本机大小的整数
    6. 函数指针
    7. 禁止发出 localsinit 标志
    8. 目标类型的新表达式
    9. 静态匿名函数
    10. 目标类型的条件表达式
    11. 协变返回类型
    12. 扩展 GetEnumerator 支持 foreach 循环
    13. Lambda 弃元参数
    14. 本地函数的属性
    15. 模块初始值设定项
    16. 分部方法的新功能

    2、性能提高

    Performance Improvements in .NET 5.0Arm64 Performance in .NET 5.0, 和 gRPC.

    3、.NET自带类库增强

    Json序列化、正则表达式和and HTTP (HTTP 1.1HTTP/2)。

    • .NET 5.0对System.Text.Json进行了显着改进,以提高性能,可靠性。https://github.com/dotnet/runtime/issues/41313
    • HttpClient类增加了一些扩展方法
    •  改进了对不可变类型的支持
    • 新增JsonSerializer支持record和fields类型

    4、P95延迟减少

    由于GC,分层编译和其他方面的改进,P95延迟有所减少。https://docs.microsoft.com/en-us/azure/internet-analyzer/internet-analyzer-scorecard

    5、增加对Windows ARM64WebAssembly的支持

     .NET应用程序现在可以在Windows Arm64上本机运行。 这是在.NET Core 3.0中添加的对Linux Arm64的支持(对glibc和musl的支持)。 使用.NET 5.0,您可以在Windows Arm64设备(例如Surface Pro X)上开发和运行应用程序。

    WPF和Winform目前还不支持运行在Windows Arm64设备上,需要等待后续更新。

    此外,Windows ARM64性能也得到了提升,https://github.com/dotnet/runtime/issues/35853

    6、Windows Form设计器增强

    在Visual Studio 2019 16.8版本中,Windows Form设计器得到了增强(针对.NET Core 3.1和.NET 5)。

    现在已经支持全部Winform的控件以及Telerik Winform控件。

    设计器现在已经包括:拖放,选择,移动和调整大小;剪切/复制/粘贴/删除控件,与属性窗口集成,事件生成等功能。 数据绑定和对更广泛的第三方控件的支持将会在后续版本中实现

    反正这些在.Net Framework版本中很早就已经有了,这次更新也就不算新鲜事了。

    7、TargetFramework已经更新为net5.0

    https://www.cnblogs.com/zhaotianff/p/13440107.html这篇WPF的文章中,可以看到以前的TargetFrameWork是netcoreapp3.1,现在已经是net5.0了

    在后续的.NET 6.0版本中,Xamarin项目还能通过TargetFramework来描述操作系统依赖性,定位iOS和Android。

    针对桌面项目(WPF、Winform和WinRT),TargetFramework已经被更新为net5.0-windows,还可以指定操作系统版本,如 net5.0-windows7 、net5.0-windows10.0.17763.0 。

    这也就意味着在WPF中可以直接引用Winform的类库,不再需要修改.csproj文件。反之亦是如此。

    如果需要使用WinRT APIs,就必须指定Windows 10的版本,如net5.0-windows10.0.15063.0(Windows v1703)

    如果有跨平台需求,需要注意以下几点:

    1. net5.0是.NET 5.0的新目标框架(TFM)。
    2. net5.0结合并替代了netcoreapp和netstandard TFM。(https://docs.microsoft.com/en-us/dotnet/standard/frameworks#supported-target-frameworks)
    3. net5.0支持.NET Framework兼容模式
    4. net5.0-windows用于标识使用Windows系统特定的功能(APIs),包括Windows窗体,WPF和WinRT API。
    5. 在.NET 6.0中将添加net6.0-ios和net6.0-android,默认TFM 是net6.0。
    6. 特定于操作系统的TFM可以包含操作系统版本号,例如net6.0-ios14。
    7. 可移植API,如ASP.NET Core将可与net5.0一起使用。 在net6.0中,Xamarin forms也将支持该功能。

    说明:

    在Visual Studio 2019 16.8/16.8.1版本中,控制台应用程序、WPF、Winform的目标框架仍然是.Net Core 3.1,需要手动修改成.NET 5.0。而ASP.NET项目,默认目标框架已经是.NET 5.0。

    8、与WinRT互操作(重大更改)

    一个重大更改就是,WinRT APIs现在已经作为.NET 5.0的一部分,现有的WinRT互操作方式已从.NET运行时中删除。 这也就意味着使用了WinRT库函数的.Net Core 3.x应用程序在升级到.NET 5.0时,需要重新构建。

    这也就意味着,不再需要手动引用任何组件,导入命名空间就可以直接使用WinRT APIs。

    在Windows 8操作系统中,微软推出了WinRT,一种新的运行时。到Windows 10时代,WinRT已经变成UWP,现在又叫回了WinRT,还是那种熟悉的感觉。虽然我不做这方面的开发,但以前读过一本书叫Windows Runtime via C#,当时就觉得WinRT很强。

    9、Native Export(原生导出?)

    这个功能主要跨平台用,我目前用不到,可访问以下链接获取详细信息https://github.com/AaronRobinsonMSFT/DNNE

    10、在Windows上支持(ICU International Components for Unicode)

    ICU库用于Unicode和全球化支持,以前仅在Linux和macOS上使用。

    11、容器

    这一块我目前用不到

    12、单文件应用

    单个文件应用程序作为单个文件发布和部署。 该应用程序及其依赖项都包含在该文件中。 当应用程序运行时,依赖项直接从该文件加载到内存中。

    这个功能目前主要是针对 Linux的。这功能挺好的,坐等支持Windows。

    关于.NET 5的详细介绍,可以访问以下链接:

    https://devblogs.microsoft.com/dotnet/announcing-net-5-0/

  • 相关阅读:
    python学习之路-day3
    python学习之路-day2
    python学习之路-day1
    Hystrix断路器
    jmater的使用
    记录1
    springcloud-Gateway
    Quartz框架
    红黑树的左旋和右旋
    异步回调CompletableFuture
  • 原文地址:https://www.cnblogs.com/zhaotianff/p/13962812.html
Copyright © 2020-2023  润新知