.NET 7 Preview 3添加了这些增强功能
.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应该很简单,并且升级失败的可能性很小,但并非不可能。
- 前往官方下载站点并下载 .NET SDK。
- 为了安全起见,还可以在此处查看重大更改列表。
在继续之前,请确保已备份项目,然后打开项目文件并修改目标框架属性。
<TargetFramework>net7.0</TargetFramework>
在很大程度上,Microsoft 将 .NET 7 Preview 3 中包含的大量优化和错误修复归功于社区贡献者。其中包括对代码生成和实时编译所做的修复。
有关此预览版的详细信息,请参阅.NET团队官方博客文章。它还包含有关路线图项目的一些非常有趣的信息。
.NET 7 Preview 3添加了这些增强功能的更多相关文章
- VirtualBox-Linux系统安装增强功能
我们在安装之前,必须得先安装好它所需要的依赖包,不然安装过程必定会出现错误! 一.安装依赖包 #yum install kernel-headers #yum install kernel-devel ...
- WPF4.5 中的新增功能和增强功能的信息
本主题包含有关 Windows Presentation Foundation (WPF) 版本 4.5 中的新增功能和增强功能的信息. 本主题包含以下各节: 功能区控件 改善性能,当显示大时设置分组 ...
- 宣布发布 Windows Azure 导入/导出服务的预览版以及 Web 和移动解决方案场景的若干增强功能
客户评估基于云的存储解决方案时,面临的挑战之一是以经济高效.安全快速的方式从 Blob 存储区移进和移出大量数据.今天,我们很高兴地宣布发布 Windows Azure 导入/导出的预览版,这款新服务 ...
- 安装VirtualBox中的增强功能包VBoxLinuxAdditions
首先,增强功能包VBoxLinuxAdditions有什么作用呢?请看: (1)实现客户机和主机间的鼠标切换. (2)与主机实现文件共享. (3)自动调整客户机分辨率. (4)与主机共享剪贴板的内容. ...
- virtualbox安装增强功能并设置共享文件夹
virtualbox安装增强功能并设置共享文件夹 我们在安装之前,必须得先安装好它所需要的依赖包,不然安装过程必定会出现错误! 一.安装依赖包 #yum install kernel-headers# ...
- CentOS 5.5 虚拟机安装 VirtualBox 客户端增强功能
.启动安装在 VirtualBox 中的 CentOS 5.5 虚拟机,点击“设备” => “安装增强功能”.这个时候你就可以看到有一个“光盘”已经挂载到 CentOS 5.5 的桌面上了.它包 ...
- VirtualBox安装增强功能(Linux)
我们在安装之前,必须得先安装好它所需要的依赖包,不然安装过程必定会出现错误! 一.安装依赖包 #yum install kernel-headers #yum install kernel-devel ...
- 12c分区增强功能,新功能(文档ID 1568010.1)
12c Partitioning Enhancements, New Features (Doc ID 1568010.1) APPLIES TO: Oracle Database - Enterpr ...
- ubuntu 18.04下virtualbox安装windows虚拟机+增强功能+secureCRT
先强调一下,我是在Ubuntu里安装windows虚拟机,如果要看如何安装linux虚拟机的话,那么你走错地方了. 我一直使用Linux系统做开发的,选择Ubuntu是因为多数常用软件对Ubuntu支 ...
随机推荐
- Python knife 一款伪菜刀
Python knife 一款伪菜刀. 设计之初,本想只写个命令行的就可以了,但又想与众不同,想用python写代码,又不想用c#写前端(c#太卡了),万分无奈之下,找到一个替代品,Pyqt, ...
- 论php常见的问题[转载自原乌云]
论PHP常见的漏洞 ′ 雨. · 2015/01/14 10:08 0x00 前言 里面很多都是像laterain学习到的, 如果能考上cuit的话 自动献菊花了. 0x01 安装的问题 首先拿到一份 ...
- .Net Core 前台添加赋值POST提交到Api控制实现添加
使用Form表单提交到数据库 这两个必须要写,不能写这样的格式,会提交获取不到数据 contentType: 'application/json',正确格式: contentType: 'applic ...
- 一个简单的模拟实例说明Task及其调度问题
Task对于.NET的重要性毋庸置疑.通过最近的一些面试经历,发现很多人对与Task及其调度机制,以及线程和线程池之间的关系并没有清晰的认识.本文采用最简单的方式模拟了Task的实现,旨在说明Task ...
- 在Windows11使用WSA运行Google play会遇到的问题
前提一是要有adb工具 网盘链接:https://pan.baidu.com/s/1MAdq4GsxkW7dqq689d_gQw 提取码:24q2 前提二是会使用 MagiskOnWSA--解决了两个 ...
- idea使用技巧、心得1
0.安装idea之后的准备 (1) 永久快乐使用:在我的博客搜索安装idea关键词既可 (2) 取消更新: (3) idea 官网的关于idea的使用手册:https://www.jetbrains. ...
- XML技术的作用?
XML技术用于数据存储.信息配置.数据交换三方面. 可以将数据存储在XML中,通过节点.元素内容.属性标示数据内容及关系. 可以使用XML很方便的做信息配置,软件的各种配置参数和对象关系都存贮在XML ...
- ZooKeeper 面试题?
ZooKeeper 是一个开放源码的分布式协调服务,它是集群的管理者,监视着集群 中各个节点的状态根据节点提交的反馈进行下一步合理操作.最终,将简单易用 的接口和性能高效.功能稳定的系统提供给用户. ...
- volatile 修饰符的有过什么实践?
一种实践是用 volatile 修饰 long 和 double 变量,使其能按原子类型来读写. double 和 long 都是 64 位宽,因此对这两种类型的读是分为两部分的,第一次 读取第一个 ...
- BMZCTF SDNISC2020_过去和现在
SDNISC2020_过去和现在 打开附件就一张图片 根据题意感觉是图片中隐藏了什么信息 使用binwalk -e分离这里foremost不行 三个文件查看在第一个中发现flag