The https://devblogs.microsoft.com/dotnet/whats-new-for-visual-basic-in-visual-studio-2022/ announcement has been updated slightly due to a premature announcement...
A previous version included the “Inline diagnostics” feature here in error. This feature is part of the 17.1 (Visual Studio 2022 Update 1) preview, not 17.0 (Visual Studio 2022).
I can confirm that it is in the Preview...
Let's go out and do amazing things with VB and share with others that we're not limited by any kind of "perceived" limitations; we as a community can do whatever we want in our language.
We really need to find an awesome case for VB, however most of the lovely apps are on the web and with VB I think we can get to MVC 5 and the ASP.NET Core web API if I'm not mistaken.
The deciding factor for VB is definitely MAUI, this tool can really help change the popularity of VB, but I don't know if MS has plans for VB in MAUI
Where there is a will... there is a way. 😎 Thanks to VB Source Generators I'm working on what I'm currently naming "Project Insanity". Tonight I worked through a VERY, VERY, VERY ROUGH proof of concept and do think that what I want to do will be possible. It's still a long road from here to there, but if I can do it... it will be FREAKIN' AWESOME!!!! (I'm being a little ambiguous at this point as I don't want to get peoples hopes too high... but if I can make it work... I'm thinking it's pretty jaw-dropping if I may say so myself - and what a way to try to set myself up for disappointment 😜).
I've said this before, but I believe it bears repeating... Source Generators (along with some other language features along the way) are really opening the door to some very interesting concepts/ideas/possibilities. Of course this now mean that I have to really put in the time to learn the whole of the ins-and-outs of Roslyn. 🤔
As an outside observer to the F# community, I can only speculate. The first point to keep in mind is that F# isn't a "Microsoft thing" but rather something that Microsoft participates within. Officially, it is controlled by the F# Software Foundation (FSSF) (almost 7 years ago) which is a non-profit entity. Microsoft and many other contributors help with the momentum and Microsoft is the primary team behind the Visual Studio integration (to the best of my knowledge). From what I understand, Microsoft has a big interest (and invest heavily to) F# primarily because of Universities and scientific-related teams - of which these organizations typically spend a significant amount of money with Microsoft (again, could be a little off on this). With that said, F# (to me) is a very important part of the .NET eco-system and one that we should not only appreciate it's existence to help ensure CLR/CLS/.NET Standard/etc. but also take a bit of inspiration from regarding what community could do. So to sum up...
Is all the support F# is getting in .net5 and .net6 a MS decision or an F# community effort?
From what I understand, it's "mostly community effort".
WinForms and WPF devs, help us decide if we should build a new feature for .NET desktop platforms and what should be our priorities in the future. Schedule a call with me via https://aka.ms/dotnetdesktopcall. Your feedback is super valuable! Folded hands
This was posted on Twitter... just had my call (I was apparently the very first to sign up) with them and I encourage others to do the same.
Could we as a community do something in any way?
There's not an easy answer to this; with that said I'm working on writing a blog post regarding a particular angle related to this subject... when I get it finished I'll update here with a link. I have a very rough first draft and want to spend some time expanding on it as I want to back up what I'm saying with additional facts that can be referenced.
I guess I'm confused as I see the article; is there something I'm missing?
if you go to: https://devblogs.microsoft.com/dotnet/
and start browsing the blog, you'll notice there's no news about VB unless you use the magnifying glass to search and type "VB"
was visible on the blog and now doesn't come with all the other news anymore.
I joined the blog on November 8, 2021 and saw the news about Kathleen's VB, now if you don't look in the magnifying glass you won't find it on the blog.
I found it strange that this happened
Looks like there might be something taking place regarding language change...
The feature is called CallerArgumentExpression with the C# spec found at https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-10.0/caller-argument-expression
The VB specific activity can be found at dotnet/roslyn#54132
The TLDR of this is that Visual Studio 2022 v17.1 should see VB "16.9" being the default language version (it is currently "16.0").
For anyone interested about the process of getting changes done around "language changes" that will impact developers; take a moment to review:
Keep in mind that this a conversation among members of the Roslyn team about a change requested (initiated) by a manager. Don't get me wrong, I'm happy to see this type of thing taking place... just because some people think that it is a "small change" that most likely won't affect anyone, the policies are in place to help ensure/guarantee that things are looked at. When outsiders encounter this level of "push-back", there are complaints that the team is resisting change... but I don't see this as being the case. If you want to contribute something, you have to do so following the same level required by the team members. I just find the chain of events and conversation in this pull request enlightening and take some solace in the idea that we really do have people on the team doing their best to ensure we continue to have a high quality product that requires a consistent high-bar with regard to changes being made.
Right now, to do the same thing:
Imports System Module Program Sub Main(args As String()) Console.WriteLine("HELLO WORLD!") End Sub End Module
or more accurately...
Imports System Module Program Sub Main(args As String()) 10: Console.WriteLine("HELLO WORLD!") End Sub End Module
Imports System 10: Console.WriteLine("HELLO WORLD!")
The reason why I include line numbers in the first example is to think about the following example:
10 PRINT "HELLO WORLD!" 20 X = X + 1 30 IF X > 10 THEN GOTO 50 40 GOTO 10 50 END
which would (theoretically, if Top-Level Code existed in VB) to:
Imports System Dim x As Integer 10: Console.WriteLine("HELLO WORLD!") x=x+1 If x > 10 Then GoTo 50 GoTo 10 50: End
or, depending on if you had certain Project options set appropriately...
10: Console.WriteLine("HELLO WORLD!") x=x+1 If x > 10 Then GoTo 50 GoTo 10 50: End
For a really insane option, what about the following?
? "HELLO WORLD!"
What if, indeed...
AND... what if... and I do ask this in all seriousness... this were possible WITHOUT changing the VB compiler? It might just indeed be possible to support this with the tools that currently exist where (once available) all you would have to do is simply add a nuget reference.
Which then leads me to ask what would
?) do for different project types? In a
Console application it would output text to the, well,
Console. In a WinForms application, would it be equivalent to a
Debug.Print or for "logging"? In an ASP.NET type application, would it be for sending content to the browser (HTML)?
DISCLAIMER: This may be something that requires a team of people to participate in (ultimately) to accomplish.
I'm in the process of learning more about Roslyn (navigating through syntax trees) and in the process of exploring how I want to handle certain things I discovered that
? is something that is specifically looked for. Just for giggles, tried the following code in a method:
? "HELLO WORLD!"
And the error one receives will be similar to "Expression statement is only allowed at the end of an interactive submission."
This statement, though, is completely recognized and parses correctly since it is legal in the interactive side of things and, at least to me, it's interesting to see
entry.Kind = SyntaxKind.PrintStatement.
This will make it a little more difficult (in some ways) to do what I'm wanting to do... however, it also makes it easy to detect (since it already can do so).
Point being that
? is does (technically) exist in VB (Roslyn) but is only used (assumption) in limited scope (interactive")... (NOTE: It might not actually be used outside of the error checking, I'm making an assumption that the very limited interactive stuff in VS is using this; it might not be as it could still be using the old way* since we don't have VB scripting available to us.) I may explore this more in the future; but if anyone else knows any more details, please share.
After a long wait my fix to handling formatting _ ‘ is in the current release of Visual Studio 2022. I want the thank @CyrusNajmabadi and @SamHarwell for making it happen. This continues to give me hope to be able at add additional feature to VB by community in the future.
This continues to give me hope to be able at add additional feature to VB by community in the future.
My view is that the answer has (all along) not been a (hard) "No!"... but rather the bar is pretty high in order to get a "Yes!". Also, "no plan" doesn't mean "nothing is going to happen"; or, more specifically, plans can and do change over the course of time. Changes are indeed taking place both within Roslyn as well as in .NET / Visual Studio / WinForms / etc. that DIRECTLY impact VB.
to answer your question about VB, I'm working on trying to make things more async, and to work on perf not causing blocking issues in it in the typing experience -- @CyrusNajmabadi
Can you take a moment to update about the work you were referring to when you posted this a while back?
?for printing, even if it possible. In C#, we use cw+tab shortcut for Console.writeline snippent, which doesn't exist in VB, and there is an issue about that dotnet/roslyn#37049
<?xml version="1.0" encoding="utf-8"?> <CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> <CodeSnippet Format="1.0.0"> <Header> <Title>Console.WriteLine</Title> <Author>M. Hmdy Ghanem</Author> <Shortcut>cw</Shortcut> </Header> <Snippet> <Code Language="VB"> <![CDATA[Console.WriteLine($msg$)]]> </Code> <Declarations> <Object> <ID>msg</ID> <Type>System.String</Type> <ToolTip>The message you want to write.</ToolTip> <Default>"Hello"</Default> </Object> </Declarations> </Snippet> </CodeSnippet> </CodeSnippets>