全新的.NET Core Telerik WinForms设计器已经发布一段时间了,在今年发布的R3 2020中已正式发布。随着.NET Conf 2020的结束,.NET 5.0官方已正式发布,现在本文将为大家介绍Telerik WinForms对.NET Core和.NET 5.0中的Visual Studio WinForms设计时的支持。
为什么选择新的设计器?
简单来讲,由于基础架构发生变化,所有需要新的设计器。在Visual Studio设计图面中使用.NET Core控件,将会非常复杂。仅因为Visual Studio依赖于直接与正在设计的组件进行交互,所以旧方法永远无法与.NET Core组件一起使用。 尽管.NET Framework控件可以做到这一点,但它不适用于.NET Core控件。Visual Studio是在.NET Framework之上和Visual Studio进程内部(devenv.exe)构建的桌面应用程序,您无法访问.NET Core组件。 由于无法与组件交互,因此需要新的解决方案、需要新的体系结构。
新的方法
一年多以前,Microsoft发布了WinForms设计器的第一个预览版。 当时它缺少许多功能,并且缺少扩展点和API以允许自定义设计器使用。从那时起,选择解决方案仍处于重要地位。设计时分为三层:客户端、协议和服务器,客户端层是Visual Studio的一部分,它以经典的.NET Framework为目标;服务器层是.NET Core组件所在的地方,它在单独的.NET Core进程中运行;协议层是多目标 - .NET Framework和.NET Core - 并负责处理来自客户端的请求以及处理来自服务器的响应和通知。
大多数设计器代码都驻留在服务器上,尤其是所有控件设计器、自定义CodeDom序列化程序、操作列表等,仍然有部分设计器需要在客户端中实现。这些部分包括处理用户输入的任何代码,通常是编辑器。 该协议是允许客户端和服务器相互沟通的通信层,它建立在JSON-RPC标准的基础之上,它使两个不同的世界(.NET Framework和.NET Core)可以进行连接。
Designer API
Microsoft将发布WinForms Designer SDK NuGet程序包,其中提供在Visual Studio for .NET Core中实现自定义设计时所需的所有扩展点和基类,该SDK基本上替代了.NET Framework和Windows本身的经典设计器API和程序集。新的WinForms设计时是独立的,并且在某种程度上是自给自足的,它与操作系统无关,并且仅与Visual Studio有关。 该SDK已引入Visual Studio,提取并利用了客户端项目中的自定义设计器代码。
Telerik UI for WinForms Designer
telerik是第一家将新的Microsoft API用于Visual Studio .NET Core设计时的控件供应商,其.NET Core设计器已经发布一段时间了。在2020年9月中旬发布了它们,当时的目标是最新的.NET 5.0 preview。一个月后,在R3 2020 SP1版本中,telerik增加了对.NET Core 3.1的支持。目前所有的设计器都已迁移,并且已经获得与经典.NET Framework中相似的设计时体验。 这是在.NET 5.0项目的Visual Studio设计器中打开的全能RadGridView:
根据API规范,设计器需要在NuGet包内实现。 任何自定义设计器都将需要针对新的Microsoft WinForms Designer SDK,该SDK还将加入Visual Studio,并且在将来的Visual Studio版本中,SDK中的重大更改可能会破坏为旧版SDK开发的设计器。 随着时间的流逝,SDK将逐渐成熟,重大更改将变得罕见。 现在,最好注意Telerik版本和Visual Studio版本,并检查它们是否兼容。
Telerik Version
Visual Studio Version
HotFix v2020.3.1116-hotfix
Visual Studio 2019 Preview v16.9 Preview 1
R3 2020 SP1 v2020.3.1020
Visual Studio 2019 v16.8 GA
Visual Studio 2019 Preview v16.8 Preview 4
R3 2020 v2020.3.915
Visual Studio 2019 Preview v16.8 Preview 3
请访问以下文档来获取有关设计器支持和最新版本兼容性表的详细信息:https://docs.telerik.com/devtools/winforms/core/design-time。
试试看
确保下载并尝试使用Telerik UI for WinForms的最新版本,来探索所有新功能和主题: