The new .NET Core Telerik WinForms designers have been around for a while. We released them in R3 2020 which was in mid-September. Now that .NET Conf 2020 is over, and .NET 5.0 is official, we have the time to speak in more details about our support for the Visual Studio WinForms design-time in .NET Core and .NET 5.0.
Why New Designers?
This question has been around for a while. The simple answer is—we need new designers because the underlying architecture has changed. Trying to comprehend the idea of using .NET Core controls in the Visual Studio design surface, you come to understand how complex this really is. The old approach would never work with .NET Core components simply because Visual Studio relied on interacting directly with the components that were being designed. While this is possible with the .NET Framework controls, it will not work with .NET Core controls. Visual Studio is a desktop application built on top the .NET Framework and inside the Visual Studio process—devenv.exe, you cannot access .NET Core components. As you cannot interact with the components, you need new solution hence the new architecture.
Microsoft released the first preview of the WinForms designer a little over one year ago. Back then it missed a lot of features and it lacked extension points and API to allow custom designers. Still at its core the chosen solution has not changed much since. The design-time is separated into three layers—client, protocol and server. The client layer is part of Visual Studio and it targets the classic .NET Framework. The server layer is the place where the .NET Core components live, and it runs in a separate .NET Core process. The protocol layer is multi target—.NET Framework and .NET Core—and it is responsible for processing requests from the client and to handle responses and notifications from the server.
Most of the designer code resides on the server, notably all of the control designers, custom CodeDom serializers, action lists etc. Still there are parts of the designers which need to be implemented in the client. Those parts include any code which handles user input, typically the editors. The protocol is the communication layer allowing the client and server to talk to each other. It is built on top of the JSON-RPC standard and it makes it possible for two distinct worlds, .NET Framework and .NET Core, to connect.
Microsoft is releasing a WinForms Designer SDK NuGet package which provides all of the extension points and base classes needed to implement custom design-time in Visual Studio for .NET Core. This SDK basically substitutes the classic designer APIs and assemblies which were part of the .NET Framework and Windows itself. The new WinForms design-time is independent and to some extent self-sufficient, it has no dependencies on the operating system, and it is only dependent on Visual Studio. The SDK is inserted into Visual Studio and it extracts and makes use of the custom designer code in the client projects.
Telerik UI for WinForms Designer
We are the first control vendor to utilize the new Microsoft API for Visual Studio .NET Core design-time. Indeed, our .NET Core designers have been around for a while. We released them initially in the middle of September 2020 targeting the latest .NET 5.0 preview at that time. One month later, with the R3 2020 SP1 release, we added support for .NET Core 3.1. I am happy to say that all of designers are migrated and we've achieved a design-time experience similar to the one seen in the classic .NET Framework. Here is the almighty RadGridView opened in the Visual Studio designer of a .NET 5.0 project:
The designers, as per the API specs, need to be implemented inside a NuGet package. Any custom designer would need to target the new Microsoft WinForms Designer SDK and so are ours. The SDK also goes into Visual Studio and a breaking change in the SDK in a future Visual Studio release can potentially break a designer built for an older version of the SDK. With time the SDK will mature, and breaking changes will become rare. For now, it`s a good idea to pay attention for the Telerik version and the Visual Studio version, and to check if they are compatible.
||VISUAL STUDIO VERSION
||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
Head over to our documentation for details on our design-time support and an up-to-date version compatibility table: https://docs.telerik.com/devtools/winforms/core/design-time.
We are committed to supporting future .NET and Visual Studio versions. Custom selection glyphs are still missing so are the in-situ editors. We know that they are important for the ease of use, still they are not showstoppers. These features will be cool additions in a future release our .NET Core design-time implementation. Go ahead and test our designers, we'd love to hear your feedback!
Try it Out
Make sure to download and try the latest version of Telerik UI for WinForms to explore all the new features and themes:
Try Telerik UI for WinForms
We'd love to hear how this all works for you, so please let us know your thoughts by visiting our Feedback portal or by leaving a comment below.