专栏首页程序你好.NET Core 3和对Windows桌面应用程序的支持

.NET Core 3和对Windows桌面应用程序的支持

在今天的微软Build Live大会上,微软.Net Core团队公开了.net Core3的开发计划的预览。.Net Core 3 的亮点是支持Windows桌面应用程序,特别是Windows窗体、Windows Presentation Framework (WPF)和UWP XAML。您将能够在. net Core上运行新的和现有的Windows桌面应用程序,并能享受.Net Core提供的所有好处。

微软.Net Core团队计划在今年晚些时候发布.Net Core 3的第一个预览版,并在2019年发布最终版本。我们将寻找与我们合作的开发人员,向我们提供反馈,并在我们发布的同时发布您的应用程序版本。我们认为.Net Core 3.0将会是我们发布过的最激动人心的.Net 版本之一。

ASP.NET Core将继续并行前进,并将发布.NET Core 3.0版本。我们对web和云应用的承诺没有改变。与此同时,是时候将Windows桌面应用程序添加到. net Core中了。我们已经听到了许多针对.net核心的桌面应用程序的请求,现在正在分享了我们的计划。

.NET Core对桌面程序的好处

对于桌面应用程序来说,. net Core有很多好处。

有一些是值得明确指出的:

性能改进和其他运行时更新,会让你的用户高兴

非常容易使用或测试新版本的

支持机器全局和应用程序本地部署

在Visual Studio中支持.NET核心CLI工具和sdk样式的项目

我们还宣布将在.net Core 3.0和.net Framework 4.8中加入一系列的改进:

访问完整的Windows 10(即“WinRT”)API。

能够在WPF和Windows窗体应用程序中驻留UWP XAML控件。

能够托管UWP浏览器和媒体控件,支持现代浏览器和媒体内容和标准。

.NET Framework 4.8

在一周前发布了.net Framework 4.7.2之后,我们还将公布我们的netframework 4.8开发计划。我们预计在12个月内发布下一个版本4.8。与过去的几个版本一样,新版本将包含一系列有针对性的改进,包括上面列出的特性。

可视化.net Core 3

让我们来看一下.net Core 3结构图

对Windows桌面的支持将作为一组“Windows桌面包”添加,只在Windows上使用。我们将继续提供一个优秀的跨平台产品,专注于云计算。我们计划对这些场景进行很多改进,稍后将与大家分享。

从更高层次的视角来看,你可以把WPF想象成在DirectX上的富层,而Windows则是在GDI Plus上的更薄层。WPF和Windows窗体在Windows中很好地暴露和运行了许多桌面应用程序功能。它是Windows窗体和WPF中的c#代码,我们将其作为一组带有.net Core 3的库。Windows的功能,如GDI Plus和DirectX,将保留在Windows中。

我们还将同时发布一个新的 .NET Standard 版本。当然,所有新的 .NET 标准api都将是 .NET Core 3.0的一部分。例如,我们还没有将Span<T>添加到标准中。我们将在下一个版本中做这个。

c#、f#和VB已经在使用.NET Core 2.0了。您将能够使用.NET Core 3中的任意一种语言构建桌面应用程序。

Side-by-side 应用程序本地部署

. net核心部署模型是Windows桌面开发人员在. net Core 3中体验到的最大好处之一。简而言之,你可以以任何你想要的方式安装。net Core。它具有很多部署灵活性。

当新的.net Core版本发布时,您可以一次更新一个应用程序,而不必担心影响其他应用程序。新的.net核心版本安装在新的目录中,现有的应用程序不使用。

对于需要最大隔离的情况,您可以在应用程序中部署. net Core。我们正在开发新的构建工具,将你的应用程序和.net核心作为一个新的可执行文件捆绑在一起。

我们已经有这样的部署选项的请求很多年了,但是从来都不能用.net框架来交付。. net Core使用的模块化架构使这些灵活的部署选项成为可能。

在现有的桌面应用程序中使用.NET Core 3

对于新的桌面应用程序,我们将指导大家从.net Core 3开始。更有趣的问题是,将现有的应用程序(尤其是大型应用程序)迁移到.net Core 3,会是什么样的体验。我们希望体验足够简单,对于任何正在进行活动开发的应用程序来说,迁移到.net Core 3是一个简单的选择。

快速解释我们的计划:

桌面应用程序需要针对.net Core 3重新编译。

项目文件需要更新到目标.net Core 3。

依赖项不需要重新定位和重新编译。如果您更新依赖项,将会有额外的好处。

我们打算为桌面应用程序提供兼容的api。我们计划让WPF和Windows同时具备功能,但其他方面都是如此,并让它们在.net Core 3上工作。事实上,我们已经使用了一些自己的应用程序和其他我们可以访问的应用程序。

我们有一个版本的Paint.NET在我们实验室里运行。事实上,我们并没有接触Paint.NET的源代码。我们让现有的Paint.NET二进制文件运行在.net Core上。我们没有可用的WPF的运行程序,所以我们只是在实验室机器上的. net Framework目录中使用了WPF二进制文件。顺便提一下,这个试验在.netCore中发现了一个未知的bug,这个bug已经被net Core 2.1修复。

我们还没有做任何优化,但我们发现Paint.NET在.net Core中运行时启动速度更快。这真是一个惊喜。

类似地,EF6将被更新为.net Core 3.0,为使用EF6的现有应用程序提供一个简单的前进路径。但是我们不打算为EF6添加任何主要的新特性.EF Core将扩展为新的特性,并将保留所有类型的新应用程序的推荐数据堆栈。如果您想利用新特性和改进性能,我们建议您移植到EF Core。

我们知道兼容性对于将现有桌面应用程序迁移到.net Core 3的每个人来说都是非常重要的。我们将继续测试应用程序,并向. net核心添加更多功能来支持它们。我们将发布任何难以支持的api,这样我们就可以得到您的反馈。

更新项目文件

在.NET Core项目中,我们采用了sdk风格的项目。sdk风格项目的一个关键方面是PackageReference,它是引用NuGet包的一种更新的方式。PackageReference替换packages.config。PackageReference可以同时引用整个组件区域,而不是一次只引用一个组件。

与sdk风格项目相比,最大的经验改进是:

更小更清洁的项目文件。

更友好的源码控制(更少的变化和更小的差别)

在Visual Studio中编辑项目文件,不卸载

NuGet是构建和响应目标框架更新等变更的一部分。

支持多平台

为桌面项目采用。net Core 3的第一部分将迁移到sdk风格的项目。在Visual Studio中会有迁移体验,可以在命令行中获得。

一个用于ASP的sdk样式的项目的例子. NET Core 2.1紧随其后。。NET Core 3项目文件看起来类似。

控件、NuGet包和现有的程序集引用

桌面应用程序通常有许多依赖项,可能来自控件供应商,也可能来自不再具有源代码的NuGet或二进制文件。并不是所有这些都可以快速更新到.net Core 3,有的甚至可能根本不更新。

如上所述,我们打算支持现有的依赖关系。如果您在Build大会上,您将看到Scott Hunter演示一个.NET Core 3桌面应用程序,该应用程序使用现有的第三方控件。我们将继续测试类似的场景,以验证.net Core 3的兼容性。

今天的新闻展示了Windows桌面应用的巨大投资和承诺。您可以期待我们在2019年发布两个版本,net Core 3和.net Framework 4.8。这两个版本之间共享了许多特性,而其他一些特性仅在.net Core 3中可用。我们认为,这种共性和差异为桌面应用程序的发展和现代化提供了大量的选择。

现在是成为.net开发人员的激动时刻。

本文分享自微信公众号 - 程序你好(codinghello)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-06-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • .NET Core 3将支持Windows桌面应用

    程序你好
  • 使用分布式缓存对ASP.Net Core性能提升?

    程序你好
  • Build 2018大会:.NET概述和路线图

    程序你好
  • Mono 和 .NET Core比翼双飞

    大家好,今天给大家分享.NET 蓝图之下的Mono和.NET Core 话题,微软在Build 2019 大会上给.NET 做了一个五年规划,所以分享的主题就是...

    张善友
  • .net core 3.0就要来了

    在前几天的微软 Build 2018 开发者大会上,.NET 团队发布了 .NET Core 的下一个主要版本 3.0 的规划蓝图。.Net Core 3 的首...

    Bug生活2048
  • 关于Windows 2008 R2下IIS 7和.NET 4.0的常见故障排除小结

    今天捣鼓了1台朋友公司的Windows 2008 R2服务器,配置IIS和部署网站应用,中间再次碰到几个坑,特别记录下来,以备下次再用。

    崔文远TroyCui
  • 官博翻译 | .NET Core 即 .NET 的未来

    我们在2014年11月推出了.NET Core 1.0。.NET Core 的目标是借鉴我们过去12年构建、发布和服务.NET Framework的经验去构建...

    Edi Wang
  • .NET Core、.NET Framework与XAMARIN三兄弟

    .NET Core出来了很久了,时常关注,但一直未在项目中实操,但近期开始在Xamarin平台做些企业级应用开发。

    崔文远TroyCui
  • 如何结合 Core Data 和 SwiftUI

    SwiftUI 和 Core Data 之间相差将近十年——SwiftUI 随着 iOS 13面世而 Core Data 则是iPhoneOS 3的产物;很久以...

    韦弦zhy
  • Entity Framework Core 2.0 使用入门

    晓晨

扫码关注云+社区

领取腾讯云代金券