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:
| 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


Nice! I’m using the .NET Core since the earliest betas. I’m happy to see the evolution coming to it.
That’s really great! I’m actually learning how to contribute with code for CoreFX repo because recently I found this: https://github.com/dotnet/corefx/issues/31181
You’ll have to show it is more than talk, we’ve heard a lot of talk from MS over the past 5 years in every domain, from Windows over Office to Developers Tools, but in the end, it’s actions that matter.
I think you guys already made a mistake when you left the path of feature parity, as a results of that, my employer lost confidence in the future of VB and is seriously thinking about dropping it in favor of C#.
There are other VB like languages available that run native code on all desired platforms (Windows, Linux, IOS, Android)
It does give you an upgrade path without going to the world of semicolons and C. Try some out MS is not the only compiler vendor.
And what about support Visual Basic in ASP.NET Core 3.0?
A lot of users, although they are not the majority, is a very important amount, they are waiting for Visual Basic support for ASP.NET Core and to migrate VB ASP.NET applications that use the full .NET Framework (not Core), more especially those who have previously used Webforms (not my case) and who have not support of Webforms in .NET Core.
I hope you aren’t planning on keeping all of the functions in the VisualBasic namespace and take the time to remove/update some of the functions where it makes sense (do you really need a separate trim function when the string object already has one). The financial functions should be moved out into their own separate package.
Hey Kathleen … this is really great information, but I have some questions for you.
Over the past few years VB.NET has not kept up with the evolution of .NET (like the compromises in .NET Core 2). As a result, many developers (and shops) moved to C#. So do you expect that bringing VB.NET up to the present standard (.NET Core 3) will bring those folks back? Or are you trying to just keep those who remain a better experience?
bill
We are a basic shop. For decades we have done VB but with lack of support from MS we now have been looking at non MS cross platform basics, and python has even cropped up. We have to move our apps into the future, and are trying to decide if MS will be part of that decision. A good showing with VB 16’s would give them a shot, but if it is half hearted with lack of language examples and spotty implementation would keep us looking.
Thank you for showing some light at the end of the tunnel to VB.NET community. BUT “Visual Basic Scenarios” still lacks support on some of the most demanding scenarios of modern day app developments such as…
1. ASP.NET CORE
2. Xamrian
3. Razor web pages
4. Native support of VB.net on VS.NET CODE for Anroid & iOS/Mac
5. BLAZOR
So on the contrary, VB.NET (most useful, productive & human readable prog language in the world) will be limited to windows platform at large and support for the scenarios which will be outdated in near future! Kindly make VB.NET runs everywhere even if no new programming features like C# are added. VB.NET can do better then C# if supported well.
I completely agree. I hope redmond takes this to heart.
Thanks for update. Any ETA on 16.1 and 16.2? I hope pattern matching will make it this time. Also, do you plan to include support for nullable reference types (please say yes…)?
when .net core will support web api project for vb ?
and also, is there a features added to vb 16 ?
This is good news. Thanks guys. But. Why scored on ASP.NET in conjunction with VB. They write on it and will write.
Is MVC supported in .NET Core 3?
Wow, nice!…Finally we the vbers are being treated like .net developers
I would love to see demos about this in #MSBUILD and so on
I am happy to hear of Microsoft’s continued commitment to keeping Visual Basic as part of the .NET language family. With the explosion of new languages, some (many?) of which will be niche players with specific and targeted application platforms, it is reassuring to know that VB developers do not need to throw in the towel on a language which has been their primary tool for so long.
We have all heard that “when all you have is a hammer, everything looks like a nail.” VB is robust enough to deftly handle most of the tasks developers face, and I would hope other VB developers will welcome all the improvements Microsoft can add to VB, so that we can leverage all the time and effort we have invested in mastering VB and putting it to use to solve the challenges we are given.
I’m happy to hear VB is moving forward, I still split my time between C# and VB. I’ve always had a soft spot for the Basic language family, as it was my first exposure to software development back in grade-school (late 80’s?). C# and VB are both good languages and have different strengths and weaknesses.
my one complaint about about VB was why char was not easily convertible to int like it is in C# where you could ‘a’+1 is valid to get ‘b’; it’s a small thing, but it does keep the code cleaner.
A computer programmer exemplifies Human thought, translating in effect each brain-step to a computer command. It is therefore ABSOLUTELY necessary that the programming languaged used is as close to Human thought as possible. This is exactly where Visual Basic.NET scores High.
Let us accept the fact that our whole logic is built around our natural language, that is the HUMAN language. Therefore, the programming language that is closer to the HUMAN language is more suitable for expressing algorithms while at the same time it reduces logical errors in programming. In other words, “IF… THEN… ELSE…” is far more clear and closer to the HUMAN language than if… {… }…
It is time to re-invent VB.NET, given that it offers an excellent, proven environment for converting algorithmic thoughts to programs. It will be sad and illogical to simply ignore so much human expertise in VB.NET and so many good projects written in VB.NET.
Professor E. J. Yannakoudakis (eyan@aueb.gr)
Bravo! Will the samples and documentation be updated to match? (A good sample is worth a thousand words.)
I hope so, converting c# to VB is an ugly step, and does not always give the best code.
Thanks for the Great update. Too funny, we were just talking about the topic this morning and had questions. By the way, would VB be supporting UWP (WinRT) in Core v3 ??
I started with BASIC, then QBASIC, then VB 4, then VB.Net, then C#, now I am looking at F# (wich I feel that has a part of the BASIC spirit, but with more features.)
Am glad that VB is getting what it deserves at least slowly. I wish to contribute to the beloved VB which I’m working since 1995 v1.1 onwards till date.
Wow, I’m still surprised that VB.NET is still being used. Now about a VB – Python converter/transpiler>
Thanks Good.
This is generally great news. I still look forward to the enhancements to With blocks that I have sponsored and pushed for on the language forum. I use With blocks all the time and am bothered when I have to switch to C#.
All the power of .NET combined with a natural expressiveness is what makes VB great. Sad to see Xamarin being left behind but I understand that there are forces within that community that do not fully appreciate VB.
And as for the “right balance of stability and innovation” – there is no balance. Innovation first! People who don’t want to avail themselves of new language features are not forced to do so. Supporting multiple languages keeps the CLR vibrant. One only needs to look at Java as the cautionary tale for a singleton implementation atop a pretty decent runtime environment.
I appreciate the continued commitment to VB and the strong support in .NET Core 3.
Thank you for all the great feedback! I got behind approving and answering this week.
Yes, we have to do more than talk. This is to let you know our plans and we certainly need to execute on them!
Yes, innovation is important. But I believe that Visual Basic.NET should be thoughtful about selecting the most VB-like innovations. While nullable reference types may sound like a VB-like feature at first – this is a feature whose purpose is to break your code (well, warnings, but a lot of them), which is definitely NOT VB-like. There are many things, including a graceful approach to pattern matching (extending Select Case) and improvements to With that seem more intrinsically valuable in VB. And VB has the benefit of being able to ensure something like nullable reference types is successful in C# first. These are conversations I look forward to after we’ve got a solid Visual Basic 16.0.
As Edison pointed out, we have an open issue on CoreFx for the Visual Basic runtime in .NET Core.
We haven’t changed our position on ASP.NET Core. The Razor engine (MVC) is specific to C# and WebForms will not be supported. Visual Basic can can build WebAPI backends.
@JoshLonberger: We are planning on moving almost everything forward. The goal is compatibility with existing code. Maybe analyzers/code fixes for some of the redundant stuff? That lets folks opt in to the style they prefer.
@burrows_UW: So good to hear from you! I’m in the Puget Sound area if you want to do lunch or have me visit classes. Our goal is to support programmers where they want to be. I want to remove blockers for Visual Basic where we can, and look at very VB-like enhancements.
@Matt_McGuire Can you put that suggestion as an issue in https://github.com/dotnet/vblang
@ariston_test I think of programming languages having a native rhythm. I don’t think you can line them up with music styles – but it is similar to the differences in music styles. Thus, I respect many languages, but agree that Visual Basic has the most approachable and natural rhythm.
I don’t know that I agree with you on re-inventing Visual Basic.NET. I feel that of all the language rhythms VB is the most complete and right.
@Bill Glosser We will be doing a lot of work overall on documentation as part of this effort. Also – our docs are Open Source and we treat doc contributions as equally as important as the code repos.
@brent.morris I expect the Visual Basic.NET UWP story to align with our overall plan.
Your comment is awaiting moderation.
Great news!! — glad to see continued support for this great language! As a matter of fact, lets just rename it to B# (so we can sound just as cool as C# except we’ll come first when sorted in language lists).
Or — lets just standardize on a language as per this post I found last year…
https://theuknownprogrammer.blogspot.com/2017/07/40-years-of-programming.html
Sure, the comments section or a product announcement blog post isn’t really the correct place for this.. but then, where is?
Anyone else feel like VB is the red-headed step-child in the .NET ecosystem these days? Head of the class in version 1.0.. but now that .NET has traction, VB is relegated to the dunce in the corner.. Hey Victor, you go sit in the corner while I spend time with Charlie. Victor, you so dumb. Charlie can pattern match, why can’t you?
As a VB developer, it’s annoying to be promised “Parity with C#” only to find out that’s just code for “C# is the star and you dummies are all beggars in a Dickens novel – Please sir, may I have a crumb from the floor?”.
While its nice to see MS doing something to support VB, nothing has shipped yet. Missing from their plans are webforms, MVC web apps, Xarmin apps. While we are in the midst of looking for another cross platform technology to migrate to, we will eagerly await what MS decides to ship. It has been over a decade since VB has been treated as a first class citizen so we as VBers have learned not to expect much form MS in our language…The language that built MS BTW.
Time will tell how valued we are to MS.
@danwalker.ak A slower evolution reflects the much greater numbers in C#, not a lack of respect.
I disagree with your assessment and particularly that anyone thinks there is a “dunce” corner. I will remain committed to keeping Visual Basic as a language with as little between you and doing your job as possible. But again that’s not a lack of respect.
@BDCoder I read the post you suggested.
I’m also a very grey haired (well and a little blue) programmer and I am most definitely not nostalgic. Give me docs written by real programmers and released as Open Source with as much respect as other parts of OSS at Microsoft any day. Give me a search engine over a (generally very bad) index. Give me an evolving language landscape with C# exploring a variety of concepts and VB cherry picking what best aligns with productivity and minimizes multiple ways to do things.
I was there. We could not even dream of doing what I do today. I had a friend who was active in some of the early Internet standards work and I thought he had done way too much LSD when he told me our TVs would do what we told them like play a specific movie and a document could express an extractable meaning other than a bunch of words (and that Luke was Leia’s brother).
I love having languages and platforms that embrace our current world. At the same time, I want those languages to force change to code bases no faster than necessary.