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   

27 comments

  • Avatar
    Richard Barnes

    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

    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

    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
    Peter Cunningham

    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

    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#).

  • Avatar
    Jens Samson

    MS just keeps on buring bridges.  We’ve been a VB shop since 1999, but I’m not sure we’ll be one in 3 years if this continues…

  • Avatar
    Morten Jonsen

    I too am saddened by Microsoft downgrading vb.net. Many new exciting features in VS2019 are only for C# and still no AspNet Core for VB … sad 🙁

  • Avatar
    James Perkins

    I have been a VB programmer for a long time.  I am a EE and I work with many applications and software packages that use VBA or VB like syntax for added functionality.  Very little C# or large C type language syntax other than maybe a semicolon at the end of every line.  I personally hate the C type languages as it is so cryptic with the {}; and Yoda type name declaration “A string I will call you StringTag” instead of Dim StringTag as String.  I program a lot of web form pages be it Window Desktop applications to Web form websites using VB.NET, CSS, and HTML with jquery because I don’t want to program javascript if I don’t have to. The MVC is a complex architecture that is in many ways overkill for a website or web application.  Entity Framework is not the best solution, I prefer to design the database then write my own stored procedures; I kind of think EF is for lazy programmers.  I like ASP.net with code behind, and Master Pages, and all of the toolbox items, to include Ajax tools.  To force everyone to MVC I think will start to kill Visual Studio and programming.  I have seen Python and Jython coding which is lacking compared to VB; they cannot do a Select Case from what I see and one if forced to indent for multiple If statements; which to me seems rather kludgy.  If I were to write a driver I think I would pick C or C++.  If I were to build a website or desktop application I would pick VB.  I am constantly using VBA to build Excel tools and VBA is built in a lot of applications.  I have built an interface to AutoCAD to dynamically generate drawing using VB as VBA is built in AutoCAD for automation use along with its other hard to understand artificial intelligence language that I can’t think of its name. So all of those Office VBA skills and other applications in my industry is why VB is ranking high on the user list.  VB needs to stay as C type language isn’t that user-friendly in my opinion.  I don’t think I will be moving to VSCore anytime soon.  I still have a ASP.NET 1.0 website that is still working today.  Web development alone should be simple instead of forcing Razor or MVC down our throat.  I bet many will move to basic HTML5 with some javascript and CSS for web development and abandon VS all together.

  • Avatar
    Sylvester Alelele

    While it is exciting that Ms is
    doing something to move VB forward, it is not nice to feel that thousands of lines of existing code will no longer work because VB will not support internet development.  It is also not pleasant to think that one will be forced to learn another programming language simply because VB will not permit you to build certain types of applications.

    Kindly ensure that VB developers do not end up with the short end of the stick here!

  • Avatar
    David Hitchen

    I don’t think Microsoft is forgetting, or downgrading vb.net; less focus? of course. All the focus is on getting the new standards in place, .net core, winUI, Xaml standard, etc. We know vb.net will work in .net core for wpf, winforms, and uwp, and I think once the standards are completed, vb.net will become available for Xamarin.forms, and web development. It’s all priorities.
    Personally, I just want to develop a single app that runs on Windows and MacOS using vb.net and xaml.
    So, here’s something a little more controversial. C# gets all the new features because it needs it. Compare it to Swift and C# is looking old, it still requires a semi-colon ‘;’ at the end of every line, seriously?  I actually think vb.net is ahead of C#, some will argue it’s more verbose, but that’s a personal preference, I love the verbose nature, I hate looking at a ‘}’ and thinking, I wonder what the heck does!, as opposed to ‘end for’ – bliss.
    The vb.net language itself isn’t lacking, it’s almost perfect. New features need to be in the frameworks and compiler; and they’re coming, which means vb.net can use them just as C# and F#. The only thing missing is the use of vb.net in other areas such as web and cross platform, but I think that will come, in time.

  • Avatar
    Arlo Weston

    I’m very excited for Visual Basic Runtime in .NET Core 3.0!!!!  Any updates?  Hopefully it will be ready before September 2019?

  • Avatar
    Martin Soles

    So, it’s been 9 months since we heard anything here. Yes, I am trying to read up on things over on GitHub. There have been no public meeting notes since last year. The other discussions over there seem to be stagnant (last message was on June 30th), as well. How are things progressing? It would be nice to to have some kind of summary.

  • Avatar
    Jaco le Grange

    It is not because most development in VB.net is winforms. It is because Microsoft makes this assumption and only make the most necessary development tools available for VB.net focusing on winforms.Personally I would have done all my web development and mobile development in VB.net if I was able to.So now I reluctantly add to the flawed usage statistics regarding this… 

  • Avatar
    David Hitchen

    A quick check on the Blog Posters for VB.net and it appears most of them no longer work for Microsoft, inlcuding Kathleen. 
    Microsoft – You have a great community of VB.net lovers, ask us to blog for you, bring us into the virtual-team at Microsoft and we’ll create some great content for you and respond to the comments. Open-source the blog 🙂

  • Avatar
    Hitesh Davey

    Hello MS VS & DOTNET TEAM! Is there anything really happing in VB.NET world? It has been almost a year now and we don’t see any update or blog post on this all-time favorite & beautiful computer programming language or we are beating a dead horse? It is also OK if you cannot add new language features in VB.NET like C# but just enable it to run everywhere where dotnet core is capable to run. We can do wonders if that option is done. 

Leave a comment