使用.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 ...
随机推荐
- 分布式存储Minio集群环境搭建
MinIO 分布式集群搭建 分布式 Minio 可以让你将多块硬盘(甚至在不同的机器上)组成一个对象存储服务.由于硬盘分布在不同的节点上,分布式 Minio 避免了单点故障. Minio 分布式模式可 ...
- MySQL Last_SQL_Errno: 1062----经典错误,主键冲突
一.基础信息 1. Centos7.4 2.MySQL 5.7.21 3.基于gtid的复制 二.异常描述 误把从节点当成主节点插入一条数据,同一条数据在主.从节点插入都进行了一次插入操作,导致主键冲 ...
- 08-kubernetes 存储卷
目录 存储卷 emptyDir 测试及使用 Pod测试挂在共享NFS 写测试清单 测试 pv, pvc 创建几个PV 创建测试的Pod 和 PVC 存储卷 分为四种: 有状态,需要存储 有状态,无需存 ...
- svn+apache搭建版本控制服务器
Centos7(linux)搭建版本控制服务器(svn+apache) 1.简介: 版本控制服务器: 版本控制(Revision control)是一种软体工程技巧,籍以在开发的过程中,确保由不同人所 ...
- 企业日常巡检shell脚本
Linux内部查看系统信息 $INTERNET192忽略 [root@ mysql-master ~]# ip a|grep eth0|grep inet|cut -d' ' -f6|cut -d'/ ...
- TestNG系列(二)TestNG注解
前言 TetsNG提供了很多注解,允许测试人员灵活地组织测试用例 一.@Test @Tets是TestNG的核心注解,被注解的方法,表示为一个测试方法. description属性 @Test(des ...
- 华为云 AI 实战营计划,带你迈上 AI 之路
当今,AI的开发人才需求呈现极大的供需不平衡.所有开发者都关心,要如何从一名开发者晋升为AI开发者?AI开发能力,是主要的进入障碍.不用慌,华为云推出了 <华为云ModelArts-Lab AI ...
- RDS关系型数据库 入门 01 创建关系型数据库实例【华为云分享】
[摘要] 关系型数据库(Relational Database Service,简称RDS)是一种基于云计算平台的即开即用.稳定可靠.弹性伸缩.便捷管理的在线关系型数据库服务.RDS具有完善的性能监控 ...
- [ch05-00] 多变量线性回归问题
系列博客,原文在笔者所维护的github上:https://aka.ms/beginnerAI, 点击star加星不要吝啬,星越多笔者越努力. 第5章 多入单出的单层神经网络 5.0 多变量线性回归问 ...
- hoverdir
js 引入 jq && modernizr.custom.97074.js &&jquery.hoverdir.js css 引入style.css html代 ...