使用.NET Core 构建现代化的桌面应用
我们今天要聊的内容主要桌面开发四个方面:Windows平台、.NET Core 3 平台上的WPF,Winform, 应用打包解决方案 MSIX 和 XAML 群岛访问原来UWP的控件,让我们的应用程序迅速现代化。
Windows平台上的应用开发,我们通常会选择以下三个技术:
- Windows Forms
- Windows Presentation Foundation
- Universal Windows Platform (UWP)
但事实上, 你真正想瞄准的是 Windows。Windows是平台。 这些选项只是我们针对 Windows 开发应用时所拥有的不同 UI 框架选项。更重要的是, 当你优化你的应用针对 Windows 10 时, 你会得到更多的创新、Api 和 windows 10 操作系统为您提供的好处。
把 Windows 看作是一个平台。
UI 框架只是一种偏好
而且, 这三个UI 框架现在都是开源的:
- Windows Presentation Foundation: https://github.com/dotnet/wpf
- Windows Forms: https://github.com/dotnet/winforms
- Windows 10 XAML: https://github.com/Microsoft/microsoft-ui-xaml
WPF 和 Windows Forms 开源都是基于.NET Core 3.0, 你肯定有疑问为什么是 .NET Core 3. 给我个理由?
.NET Framework 4.8 已经发布,.NET 4.8 已经帮助我们解决了很多问题, WPF和Windows Forms的高DPI更好的至此,Windows 10 中最新的浏览器和媒体播放器的新控件,并支持最新的标准。.NET Core 3 是 .NET Core 的下一主要版本。 这个即将发行的版本的主要特点是支持 Windows 桌面应用,包括 Windows 窗体和 WPF 应用。 你将能够在 .NET Core 3 上运行新的和现有的 Windows 桌面应用并体验 .NET Core 具有的所有优势。 托管在 XAML 岛中的 UWP 控件也可在面向 .NET Core 3 的 Windows 窗体和 WPF 应用中使用。
.NET Core 的性能更好,速度更快,.NET Core的并行安装的特性可以帮助你在发布应用程序中获取显而易见的方便,更好的打包方案MSIX, 开源,支持.NET Standard 2.1, 支持C# 8.0等还有很多新特性。
使用.NET Core 3 升级Windows 桌面应用开发的好处还有很多,下面简要的列几条:
•现代运行时、BCL 和语言功能
•更容易访问平台和设备的API
•现代化 且可访问的的UI和输入
•针对 DevOps 进行无缝的应用程序部署、更新和优化
•开发人员更好进行敏捷创新
.NET Core 3.0 将在下个月发布RC, 9月份正式发布,将在11月份发布长期支持版本3.1 ,2020年 11月发布.NET 5 ,其实就是.NET Core 4.0 ,为了避免和.NET 4的混淆,以及统一.NET品牌的考虑统一叫做.NET 5,往后
每年发布一个主要版本, 发布的偶数版本是LTS。
现在就可以动手试试了,需要注意的是你在构建32位还是64位的应用程序的时候需要安装对应版本的sdk,最简单的就是2个版本的SDK都装上。下载地址:https://dotnet.microsoft.com/download/dotnet-core/3.0
.NET可移植性分析器可帮助您识别代码中可移植或不可移植到. net Core 的部分, 为您提供完整的 Excel 报告。
第一步是从package.json迁移到 PackageReference。
最简单的方法是创建一个运行 "dotnet new wpf" 或 "dotnet new winforms" 的空 csproj。
您可以使用生成的 csproj 作为起点, 从旧 csproj 迁移您的 PackageReferences , 然后从那里开始。
大多数项目都应该是相当超前的。
如果您需要更多信息, 请按照博客文章中的步骤操作。它是非常完整的。https://aka.ms/porting-to-netcore3
WPF Demo
MSIX是一种Windows应用包格式,可以为所有Windows应用程序提供现代化打包体验。MSIX 是一种基于.msi, appx、 app-V和 ClickOnce 安装技术的组合构建的一种安全可靠的打包格式。
- 能够在不对计算机构成风险或引起“计算机腐烂”的情况下安装和卸载
- 开箱即用的自动更新
- 更容易分发,可以通过微软商店,企业自己的微软商店,文件共享,HTTP URL分发
从 Windows 10 版本 1903 开始,可以将 UWP XAML 控件直接添加到与窗口句柄 (HWND) 关联的 WPF、Windows 窗体或 C++ Win32 应用中的任何 UI 元素。 这意味着,你可以将最新的 UWP 功能(例如 Windows Ink 和支持 Fluent Design System 的控件完全集成到 Windows 以及桌面应用的其他显示表面中去。 此开发人员方案有时称为“XAML 岛”。
关于Windows开发,其中一个最大的抱怨是微软在Winforms和wpf的投入少;Windows10提供的大部分新特性都只是针对UWP构建的。虽然我们现在可以从.NET Framework 调用UWP API,但仅适用于不涉及UI的情况。为了解决这个问题,微软创建了两个新控件:WinForms XAML Host和WPF XAML Host,使开发人员可以把UWP编写的UI嵌入到现有WinForms/WPF应用程序。
使用.NET Core 构建现代化的桌面应用的更多相关文章
- .NET Core 构建跨平台的桌面应用
1.运行环境 开发工具:Visual Studio 2017 JDK版本:.NET Core 2.0 项目管理工具:nuget 2.GITHUB地址 https://github.com/nbfujx ...
- 在Visual Studio 2017中使用Asp.Net Core构建Angular4应用程序
前言 Visual Studio 2017已经发布了很久了.做为集成了Asp.Net Core 1.1的地表最强IDE工具,越来越受.NET系的开发人员追捧. 随着Google Angular4的发布 ...
- 【Asp.Net Core】在Visual Studio 2017中使用Asp.Net Core构建Angular4应用程序
前言 Visual Studio 2017已经发布了很久了.做为集成了Asp.Net Core 1.1的地表最强IDE工具,越来越受.NET系的开发人员追捧. 随着Google Angular4的发布 ...
- Net Core构建Angular4应用程序
在Visual Studio 2017中使用Asp.Net Core构建Angular4应用程序 前言 Visual Studio 2017已经发布了很久了.做为集成了Asp.Net Core 1 ...
- 用ASP.NET Core构建可检测的高可用服务--学习笔记
摘要 随着现代化微服务架构的发展,系统故障的定位与快速恢复面临着诸多挑战,构建可检测的服务,帮助线上保障团队时刻掌控应用的运行状况越来越重要.本次分享会讲解如何让 ASP .NET Core 应用与现 ...
- Android UI开发第三十篇——使用Fragment构建灵活的桌面
http://www.lupaworld.com/article-222973-1.html 当我们设计应用程序时,希望能够尽最大限度的适配各种设备,包括4寸屏.7寸屏. 10寸屏等等,Android ...
- ASP.NET Core 入门教程 1、使用ASP.NET Core 构建第一个Web应用
一.前言 1.本文主要内容 Visual Studio Code 开发环境配置 使用 ASP.NET Core 构建Web应用 ASP.NET Core Web 应用启动类说明 ASP.NET Cor ...
- 使用ASP.NET Core构建RESTful API的技术指南
译者荐语:利用周末的时间,本人拜读了长沙.NET技术社区翻译的技术标准<微软RESTFul API指南>,打算按照步骤写一个完整的教程,后来无意中看到了这篇文章,与我要写的主题有不少相似之 ...
- 棒!使用.NET Core构建3D游戏引擎
原文地址:https://mellinoe.wordpress.com/2017/01/18/net-core-game-engine/ 作者:ERIC MELLINO 翻译:杨晓东(Savorboa ...
随机推荐
- 【日常错误】spring-boot配置文件读取不到
最近在用spring-boot做项目时,遇到自定义的配置文件无法读取到的问题,通过在appcation.java类上定义@PropertySource(value = {"classpath ...
- 配置aria2
Mac 用户肯定都受够了百度网盘在自己电脑上的糟糕体验,至少我是如此:安装官方的 App,经常下载时中断,有时甚至 Bug 般连续中断,无奈使用浏览器下载,速度却是令人挠头.花点时间来配置 aria2 ...
- mac eclipse maven tomcat 运行错误 tomcat HTTP Status 404
在mac系统下安装好eclipse, maven以及tomcat, 之后运行一个web的helloworld项目,出现错误 tomcat HTTP Status 404. 查看eclipse cons ...
- mysql数据库命令
删除一个表: drop table if exists 表名; 在表中插入行: Insert into 表名 values(, , ,) 创建表: Create table 表名( Id int(10 ...
- openstack学习之neutron ml2初始化代码分析
这里没有 去详细考虑neutron server怎么初始化的,而是直接从加载插件的地方开始分析.首先我们看下下面这个文件. Neutron/api/v2/router.py class APIRout ...
- MVC效验器
步骤一:导入依赖 <!--数据效验--> <dependency> <groupId>org.hibernate</groupId> <artif ...
- HDU1529-Casher Emploryment(最最...最经典的差分约束 差分约束-最长路+将环变线)
A supermarket in Tehran is open 24 hours a day every day and needs a number of cashiers to fit its n ...
- 洛谷 Atcoder 题解 AT2585 【Colorful Leaderboard】
目测 普及/提高- 难度. 思路 将 9 种可能的等级存储在数组里,则 min 值为分数为 0 ~ 3199 的颜色种类个数,max 值为 min 值加上分数 >3200 的人数. 特判 若分数 ...
- C和C++从零开始系列(一)
今天开始写下一系列C和C++从入门开始的文章. 简单说几句C和C++的关系.C语言早于C++. C语言 贝尔实验室的Ken Thompson发明了 UNIX,当时有个B语言的.后来D.M.Ritchi ...
- Selenium之编辑框操作
编辑框操作: 网页上随处可见的编辑框,有时候编辑框里有默认的提示文字或者当我们需要输入第二次测试数据时,须先用clear()方法清除该元素里的字符串,再输入文本: 那么如何获取输入框已经输入的文本内容 ...