News

Visual Basic in .NET 5: Ready for WinForms Apps

With the milestone .NET 5 and Visual Studio 2019 v16.8 releases now out, Microsoft is reminding Visual Basic coders that their favorite programming language enjoys full support and the troublesome Windows Forms Designer is even complete -- almost.

While .NET 5 and VS 2019 v16.8 are being lauded for their cross-platform support and latest-and-greatest functionality for creating modern cloud, mobile, AI, IoT and other apps in C#, there are a lot of coders out there still wrestling with developing good old-fashioned Windows desktop apps with VB, which Microsoft isn't even advancing any more.

Case in point: When Microsoft shipped Release Candidate 1 for .NET 5 back in September, a reader posted a comment on the announcement blog, stating: "Any updates on VB.Net WinForms?"

Microsoft's Kathleen Dollard replied:

"We are tying up loose ends:

  • The templates will be in RC2, we're still settling on some issue around HighDPI.
  • Project Properties updates will be in the next Visual Studio preview.
  • I think the fix to the terrible, awful Event Handler designer bug made RC1, if not, it's fixed in RC2 (where double clicking a control gives you a new handler even if one exists)

"So, look for RC2! As well as blog post(s) around that time."

And, today (Nov. 23) such a blog post has finally been published.

"While .NET Core has had Visual Basic since the first release, and WinForms since it was released in .NET Core 3.1, it did not include the Application Framework library and WinForms Designer support Visual Basic programmers expect," Microsoft's Klaus Loeffelmann said in that post. ".NET 5 is the next version of .NET Core and we think .NET 5 is ready for you to migrate existing .NET Framework apps or create new WinForms applications."

Microsoft back in March announced that VB support was planned for .NET 5, making the leap from the previous .NET Core series of frameworks that launched the old, Windows-only .NET Framework in its new modern, open source, cross-platform edition. Specifically, it said that with .NET 5, VB will support:

  • Class Library
  • Console
  • Windows Forms
  • WPF
  • Worker Service
  • ASP.NET Core Web API

However, transferring some desktop dev functionality from .NET Framework to .NET Core proved troublesome, presenting the dev team with a "huge technical challenge for some components, especially the WinForms Designer.

"For developers the .NET Core Windows Forms Designer (when we will release the GA version) will look and feel the same as the .NET Framework Windows Forms Designer," said Olia Gavrysh, program manager, .NET. "But for us it is a huge technical challenge to bring the designer to .NET Core because it requires the design surface that hosts the live .NET Core form to run outside the Visual Studio process. That means we need to re-architect the way the designer surface 'communicates' with Visual Studio."

Windows Forms Designer Preview 1
[Click on image for larger view.] Windows Forms Designer Preview 1 (source: Microsoft).

And, even though Loeffelmann deemed VB ready to go in .NET 5 and VS 2019 v16.8, he seemed to indicate that the delays caused by the aforementioned "huge technical challenge" are still being felt, presented under the category of "known issues."

"In Visual Studio 16.8, the WinForms Designer still has a few features missing," he said. "Also, the project system, which manages the Project Dialog, does not fully support the Application Framework."

Other than those, he noted that VS 2019 16.8 and .NET 5 include these updates for WinForms development in .NET 5:

  • Designer Event Handling support: Visual Basic events are hooked up with a Handles keyword on the code behind method. This presented significant challenges to the WinForms designer and did not work correctly in .NET Core 3.1. This has been fixed.
  • Application Framework: The Visual Basic Application Framework provides event-based startup, meaning you don't need a Sub Main for WinForms applications. A new version of the Application Framework is available in .NET 5.
  • Single Instance applications: .NET 5 introduces Single Instance Applications to the .NET Core family. The new version also has updated logic that should work well in more scenarios.
  • Updates to Visual Studio dialogs: Updates have been made to a few dialogs to support Visual Basic features in the new project format. This work is ongoing.
  • Visual Basic WinForms template: We waited to add the template to Visual Studio until you could create WinForms applications with the Application Framework. This new template is the default in Visual Studio, and available via a switch on dotnet new in the .NET CLI.
  • Additional Visual Basic Runtime features: The last few versions of .NET Core have ported features of the Visual Basic Runtime. We believe this work is complete and that missing features can't work the same way on .NET 5.

"We're excited about the updates for Visual Basic in .NET 5, but first a reminder that you can base your decision to migrate to .NET 5 on whether or not you want its new features and how you need to interop with .NET 5 applications," Loeffelmann said. "The .NET Framework will be supported as part of Windows for a very long time. New features will not be added to .NET Framework. New features, including new WinForms features, will be added only to .NET 5 and future versions."

Read the post for more details on:

  • Creating .NET 5 Application Framework WinForms apps in Visual Studio
  • Differences from .NET Framework
  • New Application Framework Event ApplyHighDpiMode
  • Creating .NET Core 3.1 or .NET 5 VB WinForms Apps with the CLI
  • Changed Project File format

About the Author

David Ramel is an editor and writer for Converge360.

comments powered by Disqus

Featured

  • Creating Reactive Applications in .NET

    In modern applications, data is being retrieved in asynchronous, real-time streams, as traditional pull requests where the clients asks for data from the server are becoming a thing of the past.

  • AI for GitHub Collaboration? Maybe Not So Much

    No doubt GitHub Copilot has been a boon for developers, but AI might not be the best tool for collaboration, according to developers weighing in on a recent social media post from the GitHub team.

  • Visual Studio 2022 Getting VS Code 'Command Palette' Equivalent

    As any Visual Studio Code user knows, the editor's command palette is a powerful tool for getting things done quickly, without having to navigate through menus and dialogs. Now, we learn how an equivalent is coming for Microsoft's flagship Visual Studio IDE, invoked by the same familiar Ctrl+Shift+P keyboard shortcut.

  • .NET 9 Preview 3: 'I've Been Waiting 9 Years for This API!'

    Microsoft's third preview of .NET 9 sees a lot of minor tweaks and fixes with no earth-shaking new functionality, but little things can be important to individual developers.

  • Data Anomaly Detection Using a Neural Autoencoder with C#

    Dr. James McCaffrey of Microsoft Research tackles the process of examining a set of source data to find data items that are different in some way from the majority of the source items.

Subscribe on YouTube