November 12th, 2018

Visual Basic in .NET Core 3.0

Kathleen Dollard
Principal Program Manager

Visual Basic in .NET Core 3

 

Update: March 12, 2020

This strategy described in this 2018 post has been replaced with the one in this post.

Update: Oct 8, 2019

.NET Core 3.0 contains portions of the Visual Basic.NET Runtime (microsoft.visualbasic.dll) that do not depend on WinForms.

Visual Basic.NET support for WinForms, WPF, and other application types in .NET Core 3.0 is similar to C#. Special features of the Visual Basic.NET Runtime (microsoft.visualbasic.dll) are not in .NET Core 3.0. As an example, application startup using application models are not supported. Visual Basic.NET desktop templates are not in .NET Core 3.0 because the Visual Basic.NET experience is lacking these features.

Due to the embedded nature of WinForms in Visual Basic.NET parts of the My subsystem and application models that are not WinForms specific are also not in .NET Core 3.0.

Original Post from Nov 12, 2018

I’m excited about our plans for how Visual Basic.NET will be supported in .NET Core 3.0!

Like other .NET languages, Visual Basic will continue to be supported on .NET Framework, and you do not need to make any changes to your application.

You can read how .NET Core 3.0 affects C#, ASP.NET, and the .NET Framework.

This post covers what these changes mean to Visual Basic.NET for users interested in .NET Core. The short version is:

  • Visual Basic.NET compiles and runs on .NET Core today and this will continue
  • The familiar Visual Basic Runtime is not yet part of .NET Core, but will be included in .NET Core 3.0
  • Visual Basic 16.0 will ship at the same time C# 8.0 ships
  • Visual Basic 16.1 and 16.2 will improve C# interop and add new features

Visual Basic Scenarios

“We will focus innovation on the core scenarios and domains where VB is popular.” – From the .NET Languages Strategy

When we look at where Visual Basic development is happening, the majority of VB applications are Windows desktop applications – Windows Forms (WinForms) and WPF. This means our focus for Visual Basic in .NET Core 3 is desktop development.

The scenarios for Visual Basic in .NET Core 3.0 are:

Scenario Supported VB in .NET Core 3
WinForms Yes
WPF Yes
Console applications Yes
Windows services Yes
UAP Yes
Test projects Yes

Visual Basic.NET Runtime on .NET Core

“We will do everything necessary to keep it a first class citizen of the .NET ecosystem.” – From the .NET Languages Strategy

Future innovation in .NET will occur on .NET Core 3.0. We are committed to making Visual Basic work well on this platform.

A large part of what makes Visual Basic special is the Visual Basic Runtime. .NET Core 2 contains only the small part of Visual Basic Runtime that is defined in the Visual Basic Language Specification which was initially designed for interop with phones.

The major effort for Visual Basic 16.0 will be moving the Visual Basic Runtime to .NET Core 3.0 to provide expected features like Mid or the My namespace. This work will probably not be ready for the first preview of .NET Core 3.0 but will appear in a later preview.

Cross-Language between Visual Basic and C#

“We will keep a focus on the cross-language tooling experience, recognizing that many VB developers also use C#.” – From the .NET Languages Strategy

Many Visual Basic developers also work in C# or work in shops with a combination of Visual Basic and C# code.

Visual Basic.NET on .NET Core will interop with existing C# code in the same great way it does today. Visual Basic 16.1 will include features that improve interop with C# 8.0. As an example, if C# 8.0 supports default interface implementations, we’d plan to add them to Visual Basic.

Features and Futures for Visual Basic.NET

“When API shapes evolve as a result of new C# features, for instance, consuming those APIs should feel natural in VB.” – From the .NET Languages Strategy

Over the last few years, Microsoft has added features to C# and .NET to create better infrastructure and make the tools you use and the applications you write faster. This benefits Visual Basic programmers.

Some of the API changes that support these infrastructure improvements involve things like pointer access to memory or demand significant code changes that aren’t consistent with Visual Basic’s goals of safety and ease of use. Not all APIs in .NET Core will be consumable from Visual Basic.

With exceptions like these, most evolving APIs will be available for Visual Basic and there are several interesting features we will consider for Visual Basic 16.2, including pattern matching.

Summary

“We will keep Visual Basic straightforward and approachable.” – From the .NET Languages Strategy

Visual Basic.NET has a dedicated programmer base that includes hundreds of thousands of developers. Microsoft will continue to work on the right balance of stability and innovation for Visual Basic.NET.

As we build out Visual Basic 16.0, I will post more details on this blog. You can watch or participate in Visual Basic Language design on GitHub.

Kathleen Dollard Visual Basic PM

Author

Kathleen Dollard
Principal Program Manager

Kathleen Dollard loves to code and loves to teach and talk about code. She’s written tons of articles, a book, and spoken around the world. She’s on the .NET Team at Microsoft where she works on the .NET Core CLI and SDK and managed languages (C# and Visual Basic.NET). She’s always ready to help developers take the next step in exploring the wonderful world we call code.

73 comments

  • David

    So it looks like full vb.net support (vb.net language, visualbasic.dll, my namespace, and project templates) will be part of .net core 5.0, and that makes sense.

    First off, I'm not "in the know", but reading all the responses from Microsoft (including the ones now deleted), bringing it all together and speculating based on events, and previous years announcements:-

    * Full vb.net will be supported in .net core 5.0
    * vb.net will get the new enhancements (span, etc)...

    Read more
    • Sérgio Terenas

      I’d recommend you guys follow Olia Gavrysh on Twitter. She communicates Winforms updates on .net core and replies to DMs. Rest assured Olia’s team is working hard on Winforms and bringing the designer/components back into core. I anxiously await for GA to be able to modernize our apps without the steep learning curve of C#.
      I’m on the same boat as you guys, need VB.NET, have VB.NET APPS running at several customers and am old...

      Read more
  • Ismail Demir

    “We will do everything necessary to keep it a first class citizen of the .NET ecosystem.” – From the .NET Languages Strategy

    Nice strategy but knowing that there is NO ROADMAP since years i think you guys have no plan. You failed!

    Thats not the way a “first class citizen” deserve!

  • Jonas N

    So sad to see VB.NET fall behind C# in terms of in-house support. It was a surprisingly capable BASIC dialect and probably the best one in history. There have been few enhancements to its language design the past five years so I suppose it has already fallen into the shadow of C# like F#, where the users have to fight to even get feature parity to it. The lack of solid ASP .NET Core &...

    Read more
  • Johnnyxp64

    PLEASE rename vb.net to B# (pronounce should sound “be Sharp”). 😎

    dear Kathleen, B# seriously will get rid of the old “mind set” that many still have that is the old “VB 6”, will make it more “trendy” and in the same concept and family of the C#, F#, we would have and B#.

    because “be sharp” is always > “just See sharp”

    and remember millions of students use VB.net in the world to start learning programming...

    Read more
  • John Botha

    So Python is to become the most popular programming language in the world, according to the TIOBE index, most likely in 2020.

    https://jaxenter.com/python-tiobe-dec-2019-165365.html

    Why? Well one of Python's strongest trades are readability. That results into better productivity.
    VB.Net also scores high on readability. With Microsoft prefer to make C# the ultimate programming language with the hope to dethrone Java,
    MS should take note that it is most likely Python that is going to be there first.
    Is...

    Read more
    • AlanW

      this comment has been deleted.

  • Sohno Mehar

    ngbmodal is the widgets of bootstrap that is used in angular like autocomplete, accordion, alert, carousel, dropdown, pagination, popover, progressbar, rating, tabset, timepicker, tooltip ect. Read More

  • Pericles J. Otero

    Did Kathleen or Microsoft read the answers in this post?
    And unfortunately they do not respond by carelessness or lack of time (which I highly doubt).

  • Hitesh Davey

    There are more VB.NET developers than F#. There are more real-time apps developed & running super using VB.NET than F#. So I wonder why VB.NET is not enabled for RAZOR & BLAZOR app development and F# is supported!!

    In one of the blogs talking about the roadmap to Dotnet Core, it is mentioned that the nearest WEB FOMRS alternative to Dotnet CORE is BLAZOR app than how we can migrate our VB.NET WEB FORMS apps...

    Read more
    • AlanW

      this comment has been deleted.

    • Luis Francisco Ramirez Daza Gonzalez

      👍👍👍

  • David Lemieux

    We are now at 3.1 and Visual Studio 16.4 and there’s still no proper VB support for desktop applications.

    Can you please provide an ETA?

    • Jonas N

      I feel like VB.NET of today is only cared for to the extent of supporting legacy (.NET Framework 4) applications. The very bare minimum has seemingly been implemented to tick off a .NET Core checkbox.

    • Pericles J. Otero

      So, I also ask the same question, and also expect a plausible answer to this vb fatality not having windows forms support in .NET core 3.1?