.NET 7 Preview 3 已发布, .NET 7 的第三个预览版包括对可观察性、启动时间、代码生成、GC Region、Native AOT 编译等方面的增强。

有兴趣的用户可以下载适用于 Windows、macOS 和 Linux 的 .NET 7 Preview 3。Microsoft 建议使用Visual Studio 17.2 Preview 3 的 预览频道版本来试用 .NET 7。

Native AOT 编译

简而言之,Ahead of Time(AOT)编译可以预先构建所有内容,以避免在应用程序首次运行时需要“JIT”。很长一段时间以来,.NET 团队一直在不知疲倦地工作,为dotnet带来适当的Native pre-Time编译。虽然部分AOT一直存在,但完全的“真实”支持从未开箱即用。

使用Native AOT,将预编译引入 .NET 桌面客户端和服务器方案ReadyToRun,以及适用于移动设备和 WASM 的 Mono AOT。根据.NET团队博客的说法,添加这一功能并不是为了取代现有技术,而是为了提供一组新的功能,允许用户访问新的外形规格。 Native AOT 的主要优势在于启动时间、内存使用、访问受限平台(不允许 JIT)以及磁盘空间更小。Preview 3 版本对 Native AOT 性能进行了优化更新,以下是最新的 Native AOT 性能(与现有的 AOT 编译 “ReadyToRun” 对比):

接下来的几个 .NET 版本将持续改进 Native AOT 兼容性,且将在 dotnet SDK 中添加一流的支持(Crossgen 应用程序),以支持使用 Native AOT 发布项目。 有关原生AOT如何工作以及如何开始的更多信息,请查看官方文档


可观察性

此预览版还添加了对新的云原生 OpenTelemetry 规范的支持。这包括规范更新 #988#1708,它们使采样器的跟踪状态可变。

    //  ActivityListener Sampling callback
listener.Sample = (ref ActivityCreationOptions<ActivityContext> activityOptions) =>
{
activityOptions = activityOptions with { TraceState = "rojo=00f067aa0ba902b7" };
return ActivitySamplingResult.AllDataAndRecorded;
};

System.Composition.Hosting

有了这个,最新的托管扩展性框架也进行了小的更新,以便与以前版本的API保持一致。使用新的 API,可以将单个对象实例添加到 System.Composition.Hosting 容器中

启用“Write-Xor-Execute”缩短了启动时间

性能仍然是 .NET 7 的主要关注点。dotnet/runtime#65738 PR ,重新实现了预代码和调用计数存根(使用分层编译帮助程序存根),可显著减少运行时中创建后再修改的可执行代码数量。

启用该 Write-Xor-Execute 新功能可缩短 10-15% 启动时间。即使没有启用 Write-Xor-Execute,此更改也带来了一些微基准测试和一些 ASPNet 基准测试的稳态性能提高(高达 8%)。

默认启用 GC Regions

在 Preview 3 中,除了 MacOS 和 NativeAOT 之外的所有平台都默认启用 GC Regions功能,该功能有助于提升高吞吐量应用程序的内存利用率。

有关 GC Regions 功能的详细信息可在该 Issue 中查看

从 .NET 6 升级

正如我们之前所讨论的,从.NET 6升级到7应该很简单,并且升级失败的可能性很小,但并非不可能。

在继续之前,请确保已备份项目,然后打开项目文件并修改目标框架属性。

<TargetFramework>net7.0</TargetFramework>

在很大程度上,Microsoft 将 .NET 7 Preview 3 中包含的大量优化和错误修复归功于社区贡献者。其中包括对代码生成和实时编译所做的修复。

有关此预览版的详细信息,请参阅.NET团队官方博客文章。它还包含有关路线图项目的一些非常有趣的信息。

.NET 7 Preview 3添加了这些增强功能的更多相关文章

  1. VirtualBox-Linux系统安装增强功能

    我们在安装之前,必须得先安装好它所需要的依赖包,不然安装过程必定会出现错误! 一.安装依赖包 #yum install kernel-headers #yum install kernel-devel ...

  2. WPF4.5 中的新增功能和增强功能的信息

    本主题包含有关 Windows Presentation Foundation (WPF) 版本 4.5 中的新增功能和增强功能的信息. 本主题包含以下各节: 功能区控件 改善性能,当显示大时设置分组 ...

  3. 宣布发布 Windows Azure 导入/导出服务的预览版以及 Web 和移动解决方案场景的若干增强功能

    客户评估基于云的存储解决方案时,面临的挑战之一是以经济高效.安全快速的方式从 Blob 存储区移进和移出大量数据.今天,我们很高兴地宣布发布 Windows Azure 导入/导出的预览版,这款新服务 ...

  4. 安装VirtualBox中的增强功能包VBoxLinuxAdditions

    首先,增强功能包VBoxLinuxAdditions有什么作用呢?请看: (1)实现客户机和主机间的鼠标切换. (2)与主机实现文件共享. (3)自动调整客户机分辨率. (4)与主机共享剪贴板的内容. ...

  5. virtualbox安装增强功能并设置共享文件夹

    virtualbox安装增强功能并设置共享文件夹 我们在安装之前,必须得先安装好它所需要的依赖包,不然安装过程必定会出现错误! 一.安装依赖包 #yum install kernel-headers# ...

  6. CentOS 5.5 虚拟机安装 VirtualBox 客户端增强功能

    .启动安装在 VirtualBox 中的 CentOS 5.5 虚拟机,点击“设备” => “安装增强功能”.这个时候你就可以看到有一个“光盘”已经挂载到 CentOS 5.5 的桌面上了.它包 ...

  7. VirtualBox安装增强功能(Linux)

    我们在安装之前,必须得先安装好它所需要的依赖包,不然安装过程必定会出现错误! 一.安装依赖包 #yum install kernel-headers #yum install kernel-devel ...

  8. 12c分区增强功能,新功能(文档ID 1568010.1)

    12c Partitioning Enhancements, New Features (Doc ID 1568010.1) APPLIES TO: Oracle Database - Enterpr ...

  9. ubuntu 18.04下virtualbox安装windows虚拟机+增强功能+secureCRT

    先强调一下,我是在Ubuntu里安装windows虚拟机,如果要看如何安装linux虚拟机的话,那么你走错地方了. 我一直使用Linux系统做开发的,选择Ubuntu是因为多数常用软件对Ubuntu支 ...

随机推荐

  1. Python knife 一款伪菜刀

    Python knife ​ 一款伪菜刀. ​ 设计之初,本想只写个命令行的就可以了,但又想与众不同,想用python写代码,又不想用c#写前端(c#太卡了),万分无奈之下,找到一个替代品,Pyqt, ...

  2. 论php常见的问题[转载自原乌云]

    论PHP常见的漏洞 ′ 雨. · 2015/01/14 10:08 0x00 前言 里面很多都是像laterain学习到的, 如果能考上cuit的话 自动献菊花了. 0x01 安装的问题 首先拿到一份 ...

  3. .Net Core 前台添加赋值POST提交到Api控制实现添加

    使用Form表单提交到数据库 这两个必须要写,不能写这样的格式,会提交获取不到数据 contentType: 'application/json',正确格式: contentType: 'applic ...

  4. 一个简单的模拟实例说明Task及其调度问题

    Task对于.NET的重要性毋庸置疑.通过最近的一些面试经历,发现很多人对与Task及其调度机制,以及线程和线程池之间的关系并没有清晰的认识.本文采用最简单的方式模拟了Task的实现,旨在说明Task ...

  5. 在Windows11使用WSA运行Google play会遇到的问题

    前提一是要有adb工具 网盘链接:https://pan.baidu.com/s/1MAdq4GsxkW7dqq689d_gQw 提取码:24q2 前提二是会使用 MagiskOnWSA--解决了两个 ...

  6. idea使用技巧、心得1

    0.安装idea之后的准备 (1) 永久快乐使用:在我的博客搜索安装idea关键词既可 (2) 取消更新: (3) idea 官网的关于idea的使用手册:https://www.jetbrains. ...

  7. XML技术的作用?

    XML技术用于数据存储.信息配置.数据交换三方面. 可以将数据存储在XML中,通过节点.元素内容.属性标示数据内容及关系. 可以使用XML很方便的做信息配置,软件的各种配置参数和对象关系都存贮在XML ...

  8. ZooKeeper 面试题?

    ZooKeeper 是一个开放源码的分布式协调服务,它是集群的管理者,监视着集群 中各个节点的状态根据节点提交的反馈进行下一步合理操作.最终,将简单易用 的接口和性能高效.功能稳定的系统提供给用户. ...

  9. volatile 修饰符的有过什么实践?

    一种实践是用 volatile 修饰 long 和 double 变量,使其能按原子类型来读写. double 和 long 都是 64 位宽,因此对这两种类型的读是分为两部分的,第一次 读取第一个  ...

  10. BMZCTF SDNISC2020_过去和现在

    SDNISC2020_过去和现在 打开附件就一张图片 根据题意感觉是图片中隐藏了什么信息 使用binwalk -e分离这里foremost不行 三个文件查看在第一个中发现flag