使用.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 ...
随机推荐
- 关于ios沙盒
沙盒下主要有四个文件夹:document,caches,tmp,library document 的路径 程序运行时生成的文件,这个文件不要存比较放大的文件,比如音频,视频类,因为这里的东西会被上传 ...
- tomcat部署项目,详细!
一.导出war包 1.先导出项目的war包(idea为例) 点+号,选择 之后点ok,确定,关闭窗口,回到idea主页面 在弹出窗口中选择新建的war,选build 之后在war导出目录,找到这个wa ...
- elementUI最新版的el-select使用filterable无效无法匹配正确搜索结果的Bug解决办法
Bug描述: 今天做开发时遇到一个elementUI存在的bug. 当el-select使用filterable功能搜索时,如果你恰巧使用的是微软拼音输入法,那么你有可能会遇到搜索结果和输入的值不匹配 ...
- Unity3D for iOS初级教程:Part 3/3(下)
转自:http://www.cnblogs.com/alongu3d/archive/2013/06/01/3111739.html 消息不会自动消除 你基本的游戏功能已经完成了,但是显示一些关于游戏 ...
- React中autoComplete="off" 失效
Turning Off Autocomplete in Chrome with React tl;dr Add a hidden input with an arbitrary value attri ...
- IntelliJ IDEA 2019.3安装激活破解使用教程
一. 前言 作为一枚程序员,你肯定对IntelliJ IDEA这个工具一点也不陌生!或许你没有用过,但你也一定听说过.作为在业界被公认为最好的java开发工具,IDEA每次大版本更新都备受瞩目.划重点 ...
- [TimLinux] docker CentOS7入门——服务(2)
1. 服务含义 分布式应用中,应用的不同部分即称为“服务”,视频网站是一个分布式应用,包含有:数据的存储,视频的转码,前端展示等部分,对应的这些部分即称为相应的服务.docker平台中,定义.运行和扩 ...
- 数学工具(三)scipy中的优化方法
给定一个多维函数,如何求解全局最优? 文章包括: 1.全局最优的求解:暴力方法 2.全局最优的求解:fmin函数 3.凸优化 函数的曲面图 import numpy as np import matp ...
- MySQL 04
目录 python操作mysql mysql sql注入问题 问题描述 解决办法 增/删/改 查询 索引 基本概念 索引的原理 mysql索引种类 普通索引 唯一索引 联合索引 创建索引 正确使用索引 ...
- 文件(图片)转base64
普通图片转base64 function getBase64(url, callback){ var canvas = document.createElement('canvas'),//创建can ...