UWP 通过 .NET 9 和Native AOT 的支持实现 UWP 应用的现代化
微软(9 月 11 日)发布博文,微软正在预览对 .NET 9 的 UWP(通用 Windows 平台)支持,为现有 UWP 开发人员提供一条使用最新的 .NET 和本机 AOT 实现其应用程序现代化的途径。这样做是因为该公司敦促开发人员切换到 Windows App SDK 和 WinUI 3,可以让现有 UWP 开发者利用最新 .NET 和 Native AOT 来现代化改造其应用。

“您是考虑迁移到 Windows 应用 SDK 和 WinUI 3 的 UWP 应用开发人员吗?”微软的高级软件工程师 Sergio Pedri 今天在 DevBlogs 的一篇博文中问道。“或者想要利用最新版本的 .NET 和本机 AOT?或者,也许您一直在努力引用您最喜欢的库的新版本,因为它们仅包含对 .NET 6 及更高版本的支持?好吧,不要再观望了!此预览版 UWP 对 .NET 9 的支持为 UWP 应用程序提供了使用最新版本的 .NET 进行现代化的途径。
预览版不是 UWP 的任何新特性或功能,而是一组更新的工具和组件,它们是 .NET、Visual Studio、Windows SDK 等的一部分。它们允许开发人员使用最新版本的 .NET 和 C# 来构建 UWP 应用程序,以便在他们考虑转向 WinUI 3 时通过 .NET 9 实现其应用程序的现代化。

UWP 于 2015 年随 Windows 10 推出,实现了 微软在所有 Windows 设备(电脑、平板电脑、Xbox、IoT、HoloLens 等)上建立统一应用平台的愿景。各种问题和因素使项目停滞不前,微软引入了称为 WinUI 2 的 Windows UI 库,WinUI 2 是 UWP 的 UI 框架,WinUI 3 是 WinUI 的演变,将现代 UI 框架与 UWP 分离,使其可用于 UWP 和传统 Win32 应用程序(通过 Windows 应用程序 SDK)。停滞 UWP 开发的部分动力似乎是 微软转向专注于原生 Windows 应用程序开发,现在可以通过一系列令人眼花缭乱的选项来实现,包括 WinUI 3、Windows Forms、WPF、Xamarin、MAUI 等:

微软表示 UWP 对 .NET 9 的支持的主要目标包括:
- 为希望迁移到 WinUI 3 的 UWP 开发人员提供更好的迁移路径。UWP 对 .NET 9 的支持提供了通往 WinUI 3 的增量路径,而不必在单个步骤中执行整个迁移(意味着更新所有 .NET 运行时以及整个 UI 框架和应用程序模型)。
通过允许您专注于升级独立于 UI 框架的 .NET 运行时,以及 应用程序模型,并采用 .NET 中的进步来实现代码库的现代化,那么 现在可以将迁移拆分为两个 “检查点”。首先,迁移到 .NET 9,并让应用程序在Native AOT(这已经需要取决于场景)。然后,在确保 迁移的第一部分是否成功,您可以专注于 从 UWP XAML 切换到 WinUI 3 和 Win32 应用程序模型。用 这种方法使迁移更具增量性,并且风险更低。 我们目前正在努力迁移到 .NET 9。 - 使开发人员能够删除对 .NET Native 的依赖,以便他们可以从最新的 .NET 和 C# 功能中受益,无论他们的应用程序模型是什么。如果你当前面向 UWP,因为由于某种原因无法迁移到 Windows 应用 SDK 和 WinUI 3 (可能是因为 Windows 应用 SDK 不支持某些关键 API,或者因为你还没有资源来执行完全迁移) ,我们仍然希望允许你与所有其他 Windows UI 框架保持一致。此更新减少了 UWP 开发人员在尝试使用生态系统中的旧库对旧版应用程序进行现代化改造时遇到的摩擦。
“无论您是从 UWP 迁移到 WinUI 3,还是只是想在应用程序的现有 UI 框架上提高工作效率,此预览版都可以让您现代化到最新的 .NET 和 C#,并利用最近的工具改进来简化您的迁移过程,”Pedri 说。
这篇内容广泛的帖子继续详细介绍了如何开始、创建 UWP .NET 9 项目、项目的详细信息等等。至于即将推出的内容,Visual Studio 中的 XAML 设计器正在开发中,同时 MSTest 还将添加对 .NET 9、WinUI 2 的 UWP 支持、对 Windows Community Toolkit 的支持等。
Pedri 提供的一个警告说明:“正如我们在简介中提到的,UWP 对 .NET 9 的支持以预览版提供,因此在我们努力改善开发人员体验时,预计会有一些粗糙的边缘!我们希望从长远来看,这将成为 UWP 应用程序使用 .NET 和 C# 的首选方式,并且尽可能多的开发人员将能够将其现有的 UWP 应用程序从 .NET Native 升级到最新的 .NET 和 Native AOT。
微软的这项调整让很多传统 UWP 应用开发者感到惊喜,意味着开发者无需全面迁移至复杂且耗时的 Windows App SDK,就能将现有 UWP 应用升级到.NET 9,将带来诸多底层优势。UWP 是一个已被微软接近放弃的移动应用框架,且停滞在.NET 版本 6 上,因此,将 UWP 应用迁移到基于桌面的 Windows App SDK 可能会颇具挑战。
微软希望为 UWP 初步支持.NET 9,从而引导开发者逐步升级他们的应用,首先通过现代化底层代码库,移除对.NET Native(停留在.NET Core 2.0 功能级别)的依赖,接入最新的.NET 和 C#特性,并获得显著的性能提升。
UWP 通过 .NET 9 和Native AOT 的支持实现 UWP 应用的现代化的更多相关文章
- UWP开发入门系列笔记之(一):UWP初览
标签: 随着微软Build2015带来的好消息,Win10正式版发布的日子已经离我们越来越近了,我们也终于欣喜地看到:一个统一的Windows平台对于开发人员来说充满了吸引力,这局棋下的好大的说--于 ...
- Android Native IPC 方案支持情况
Binder - 不支持Native层的binder 内存共享 - 不支持 信号量(信号灯) - 不支持 消息队列 - 不支持 信号 - 支持,但是不能用sigqueue传消息,只能用来安装信号,可以 ...
- (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
每次使用 Visual Studio 的模板创建一个 UWP 程序,我们会在项目中发现大量的项目文件.配置.应用启动流程代码和界面代码.然而这些文件在 UWP 程序中到底是如何工作起来的? 我从零开始 ...
- (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
每次使用 Visual Studio 的模板创建一个 UWP 程序,我们会在项目中发现大量的项目文件.配置.应用启动流程代码和界面代码.然而这些文件在 UWP 程序中到底是如何工作起来的? 我从零开始 ...
- [RN] React Native 让 Flatlist 支持 选中多个值,并获取所选择的值
React Native 让 Flatlist 支持 选中多个值,并获取所选择的值 实现效果如下: 实现代码: import React, {Component} from 'react'; im ...
- CPF 使用C#的Native AOT 发布程序
微软已经将AOT的包移到Nuget了,之前是在实验测试服务器上的.并且由之前的alpha版本改成了preview版本. C#的开发效率,接近C++的运行效率,而且可以防止反编译,可以支持大部分反射功能 ...
- UWP开发入门系列笔记之(零):UWP的前世今生
引言 在本篇文章中,可以掌握以下知识: 设备族群,如何决定目标设备 新的UI控件和新面板帮助你适应不同的设备特征 从Windows 8系统开始,微软就 引入了WindowsRT(Windows Run ...
- Eclipse中移除native层编译支持
1. .project 文件 删除全部包括 org.eclipse.cdt前缀的xml结点元素.以下是一个包括cdt的完整编译配置文件. <?xml version="1.0" ...
- 漫谈GUI开发—各种平台UI开发概况
前言: 在看这边文章前,可以建议看下:图形界面操作系统发展史——计算机界面发展历史回顾 从CS到BS,现在的前端开发,其实也是GUI开发范畴.现今 各平台的UI开发概况 HTML&CSS,Wi ...
- 跨语言调用C#代码的新方式-DllExport
简介 上一篇文章使用C#编写一个.NET分析器文章发布以后,很多小伙伴都对最新的NativeAOT函数导出比较感兴趣,今天故写一篇短文来介绍一下如何使用它. 在以前,如果有其他语言需要调用C#编写的库 ...
随机推荐
- ELK Stack - Elasticsearch · 搜索引擎 · 部署应用 · 内部结构 · 倒排索引 · 服务接入
系列目录 ELK Stack - Elasticsearch · 搜索引擎 · 全文检索 · 部署应用 · 内部结构 · 倒排索引 · 服务接入 ELK Stack - Kibana (待续) ELK ...
- git将某个开发分支最近的提交合并成一个提交
你可以使用 `git merge --squash` 命令将某个开发分支最近的提交合并成一个提交. 具体步骤如下: 1. 切换到你想要合并的分支上,比如 `develop` 分支: `git chec ...
- [oeasy]python0067_ESC键进化历史_键盘演化过程_ANSI_控制序列_转义序列_CSI
光标位置 回忆上次内容 上次了解了 新的转义模式 \33 逃逸控制字符 esc 这个字符让输出退出标准输出流 进行控制信息的设置 可以设置光标输出的位置 ASR33中的ALT MODE 是 今天的ES ...
- [oeasy]python0037_字符画艺术_asciiview_自制小动物_imagick_asciiart
牛说(cowsay) 回忆上次内容 我们狂飙了一路 从用shell 直接执行 python程序 到用shell 循环执行 python程序 循环体中 把 python的 输出结果 用管道 交给了 ...
- 第九节 JMeter基础-高级登录【接口关联-鉴权】
声明:本文所记录的仅本次操作学习到的知识点,其中商城IP错误,请自行更改. 背景:电商的功能:登录.加入购物车.提交订单.问题:谁把什么商品加入了购物车?这时需要把上一个接口的响应数据(登录成功后返回 ...
- TIER 2: Archetype
TIER 2: Archetype 扫描 nmap 使用 nmap 进行扫描目标 IP,发现目标是 Windows 服务器,开放 SMB 和 SQL Server 服务. SMB SMB 之前已经接触 ...
- windows下mysql服务局域网访问配置
在局域网中访问本机(Windows)的MySQL服务器,需要确保MySQL服务器配置为允许远程访问,并且防火墙设置允许外部连接.以下是详细的步骤: 1. 修改MySQL配置文件允许远程访问 找到并编辑 ...
- 假期小结1学习安装VMware以及linux
学习VMware是一项使我能够创建和管理虚拟机的技能.VMware 是一家知名的虚拟化解决方案供应商,它提供了一系列工具和软件,使我能够在一台物理计算机上创建多个独立的虚拟环境. 首先,我获取了VMw ...
- Jmeter函数助手34-digest
digest函数用于返回特定哈希算法的加密值. 算法摘要:填入算法,如MD2.MD5.SHA-1.SHA-224.SHA-256.SHA-384.SHA-512 String to be hashed ...
- Java还是C#?我该如何选择?给年轻人的建议...
一.年轻人应该通吃 其实这不应该是我们真正的主题,而且入了行的也很少会java还是c#这么比,但初学的,java和c#往往就代表了两大流派,java代替了j2ee,c#代替了.net,ok,没有关系, ...