Visual Basic in .NET Core 3.0

Avatar

Kathleen

Visual Basic in .NET Core 3

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:

ScenarioSupported VB in .NET Core 3
WinFormsYes
WPFYes
Console applicationsYes
Windows servicesYes
UAPYes
Test projectsYes

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

Avatar
Kathleen Dollard

Follow Kathleen   

11 Comments
Avatar
SuperCocoLoco . 2019-02-28 16:05:58
What has happened with the comments? All deleted.
Avatar
Richard Barnes 2019-03-03 11:01:29
From what I am reading it does not look like asp.net core 3 supports Visual Basic. I understand you want to put a stake in web forms, and I have no issues with that but no web developement in VB at all? Screw this I moving over to Python as my primary web language. WTG Microsoft, VB developer since VB2 who has stuck with you and you finaly broke my back. 
Avatar
Harol Gomez 2019-03-14 10:17:26
I am very sorry to see how the VB.NET language and the programmers that use it are downplayed. Obviously, Vb.Net programmers have had to learn C #, F # and any other language because MS does not deliver timely documentation and examples in VB.NET. Even I wonder "Who will program only WinForms in these times?", "Why not enable at least WEB API for Vb.Net Core ?, is so difficult?". Somebody will program some new system knowing that another language of the same manufacturer will be very advanced in comparison. I think it's a demotivation tactic, so that due to tiredness it simply stops being used without noise and for the joy of someone who surely is not in MS since its inception.
Avatar
Tim Hall 2019-03-21 15:42:13
Having just got a request to port something of mine from .FX to .Core for a (potential) new customer, having read this and run the portability analyser i thought great shoudlnt be tooo hard, but it seems that winforms still isnt supported by VB (cant create a winforms.core project in vs2019 or via dotnet new ) I really hope that it arrives soon. I find it interesting that you say "A large part of what makes Visual Basic special is the Visual Basic Runtime. " is that backed up by much evidence ? Sure i used Mid, LCase, Ubound, Trim in the early days and if need be one could easilly write ones own implementation of those, even better would be a roslyn based refactoring support to convert the old way into the new way. In 15 years the only olds school VB methods/keywords i used on purpose because it was easier (even though i knew how to do it the other way)  was Cstr/Cint/Cdec (i still use them in new code though), CallByName and ReDim anything else was pure not knowing any better. I use My, mainly My.Resources as its so much easier, but things like My.Computer.FileSystem. stuff is largely supperflous  as IO.File and IO.Directory cover most of it (one diff being VBs copy directory is vastly superior to inbuilt methods) The reason i prefer VB is  i hate case sensitivity, i prefer if end if to if (x) { }  (when deep nesting at least) and i hate ending lines in ; and generally the c# syntax irks me, but it really feels like VB is being killed by attrition/death by 1000 cuts.
Avatar
winter snow 2019-03-23 00:49:00
Vb.net ranking 5th in TIOBE Index   6.4%,  C# is 3.2%   .  VS 2019 is'nt friendly for VBer.
Avatar
winter snow 2019-03-23 01:00:19
Please show your leadship ,Cohesion VBer,Representative voice for vb
Avatar
anonymous 2019-03-23 14:05:02
This comment has been deleted.
Avatar
Dewey J Hebert 2019-03-28 07:00:40
Hey Kathleen, how about an update. We have not had one since November 12th, 2018.
Avatar
Giancarlo Lovera Lopez 2019-04-03 22:08:01
Amazing news, please continue the hard working, Visual Basic need more updates <3.
Avatar
Peter Cunningham 2019-04-11 20:46:46
Kathleen,  Any news as to when it will be possible to create a .NET Core 3 Winforms Visual Basic project? At the moment, this remains impossible, both in VS2019 and in the dotnet command prompt. Thanks
Avatar
Chris Langsenkamp 2019-04-13 10:09:32
Just installed VS 2019 and was prompted for a survey.  First question was about language preference.  Want to guess which language wasn't listed at all?  (hint, it wasn't C#).