微软(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 应用的现代化的更多相关文章

  1. UWP开发入门系列笔记之(一):UWP初览

    标签: 随着微软Build2015带来的好消息,Win10正式版发布的日子已经离我们越来越近了,我们也终于欣喜地看到:一个统一的Windows平台对于开发人员来说充满了吸引力,这局棋下的好大的说--于 ...

  2. Android Native IPC 方案支持情况

    Binder - 不支持Native层的binder 内存共享 - 不支持 信号量(信号灯) - 不支持 消息队列 - 不支持 信号 - 支持,但是不能用sigqueue传消息,只能用来安装信号,可以 ...

  3. (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序

    每次使用 Visual Studio 的模板创建一个 UWP 程序,我们会在项目中发现大量的项目文件.配置.应用启动流程代码和界面代码.然而这些文件在 UWP 程序中到底是如何工作起来的? 我从零开始 ...

  4. (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序

    每次使用 Visual Studio 的模板创建一个 UWP 程序,我们会在项目中发现大量的项目文件.配置.应用启动流程代码和界面代码.然而这些文件在 UWP 程序中到底是如何工作起来的? 我从零开始 ...

  5. [RN] React Native 让 Flatlist 支持 选中多个值,并获取所选择的值

    React Native 让 Flatlist  支持  选中多个值,并获取所选择的值 实现效果如下: 实现代码: import React, {Component} from 'react'; im ...

  6. CPF 使用C#的Native AOT 发布程序

    微软已经将AOT的包移到Nuget了,之前是在实验测试服务器上的.并且由之前的alpha版本改成了preview版本. C#的开发效率,接近C++的运行效率,而且可以防止反编译,可以支持大部分反射功能 ...

  7. UWP开发入门系列笔记之(零):UWP的前世今生

    引言 在本篇文章中,可以掌握以下知识: 设备族群,如何决定目标设备 新的UI控件和新面板帮助你适应不同的设备特征 从Windows 8系统开始,微软就 引入了WindowsRT(Windows Run ...

  8. Eclipse中移除native层编译支持

    1. .project 文件 删除全部包括 org.eclipse.cdt前缀的xml结点元素.以下是一个包括cdt的完整编译配置文件. <?xml version="1.0" ...

  9. 漫谈GUI开发—各种平台UI开发概况

    前言: 在看这边文章前,可以建议看下:图形界面操作系统发展史——计算机界面发展历史回顾 从CS到BS,现在的前端开发,其实也是GUI开发范畴.现今 各平台的UI开发概况 HTML&CSS,Wi ...

  10. 跨语言调用C#代码的新方式-DllExport

    简介 上一篇文章使用C#编写一个.NET分析器文章发布以后,很多小伙伴都对最新的NativeAOT函数导出比较感兴趣,今天故写一篇短文来介绍一下如何使用它. 在以前,如果有其他语言需要调用C#编写的库 ...

随机推荐

  1. 《探索Python Requests中的代理应用与实践》

    requests加代理 高匿API代理 此处使用的小象代理:1元100个,便宜,可以购买尝试加下代理 存活期1到2分钟 import time import requests from lxml im ...

  2. [oeasy]python0030_设置路径_export_PATH_zsh_系统路径设置_export

    ​ 放入路径 回忆上次内容 我们要在任意路径下直接执行 sleep.py 把 sleep.py 放在 /usr/bin/ 下面 最终可以在任意位置执行程序sleep.py 但是 /usr/bin 里面 ...

  3. AT_abc215_d 题解

    洛谷链接&Atcoder 链接 本篇题解为此题较简单做法及较少码量,并且码风优良,请放心阅读. 题目简述 给定 \(N\),\(M\) 及含有 \(N\) 个整数的序列 \(A\). 求 \( ...

  4. 领域驱动设计(DDD)分层架构的三种模式

    模式一:四层架构 1.User Interface为用户界面层(或表示层),负责向用户显示信息和解释用户命令.这里指的用户可以是另一个计算机系统,不一定是使用用户界面的人.2.Application为 ...

  5. 靶机练习: hacksudo---Thor

    靶机:hacksudo---Thor 准备工作 靶机地址: http://download.vulnhub.com/hacksudo/hacksudo---Thor.zip MD5 校验:d12168 ...

  6. 学习笔记--Java面向对象的继承

    Java面向对象的继承 继承 继承是面向对象的三大特性之一 继承基本作用:代码复用:重要作用:有了继承才能有以后的"方法的覆盖"和"多态" 继承语法格式: [修 ...

  7. Kubernetes 存储概念之Volumes介绍

    Volumes 默认情况下容器中的磁盘文件是非持久化的,对于运行在容器中的应用来说面临两个问题,第一:当容器挂掉,K8S重启它时,文件将会丢失:第二:当Pod中同时运行多个容器,容器之间需要共享文件时 ...

  8. 2023年最新ios证书申请流程

    做过前端多端开发的朋友们都知道,hbuilderx或apicloud这些开发工具的uniapp框架可以开发ios应用,使用他们的云打包即可. 云打包的时候需要一个私钥证书和一个profile文件,这两 ...

  9. 【Web】实现页面自动刷新的功能

    技术发现自: https://www.bilibili.com/video/BV14v411b7JS?p=8 摘要自CSDN帖子: https://blog.csdn.net/senbar/artic ...

  10. 一款比较好用的 ssh、 ftp 服务的客户端软件 —— NxShell

    该软件地址: https://gitee.com/nxshell/nxshell 截图: ======================================================= ...