Getting ready for the next major Visual Studio release and integrating new developer services like Codespaces and GitHub Actions.
A lot of different things get announced at Build, it’s Microsoft’s main developer conference, so it was no surprise to see Scott Guthrie highlight that the number one driver for business performance – according to the new McKinsey Developer Velocity study is having the best developer tools.
Build 2020 saw the general availability of Visual Studio 2019 version 16.6 (a minor update but necessary to use .NET 5) and the Preview 1 release of the upcoming 16.7 version (which will be the next servicing baseline with 12 months of fixes when it launches later this year), Visual Studio 2019 for Mav version 8.6 plus several announcements for Visual Studio Code.
Built-in Terminal and .NET Async
Visual Studio 16.6 adds a built-in Terminal and a .NET Async tool for performance profiling, makes snapshot debugging easier to use the first time (you no longer have to restart Azure App Service to install it), and has several new C++ 20 features, including an early implementation of <span> (a high performance, bounds-safe way to acess the storage of another object without changing it). Ninja will now be the default generator for building CMake projects on WSL.
Model Builder tooling
The Model Builder tooling that uses AutoML to train text classification, value prediction, recommendation, and image classification models for .NET applications using the ML.NET machine learning framework used to be an extension for Visual Studio. Now it’s built into 16.6 as a preview feature, and lets you run training on Azure from inside a Visual Studio project.
WinForms was open sourced last year and is available cross-platform with .NET Core 3.0. Now there’s a preview of the new Windows Forms designer for .NET Core projects that includes most WinForms controls (except DataGridView and ToolStripContainer) plus the new Chromium-based WebView2 control, in both 16.6 and the Preview 1 release (which adds customs controls). Support for controls from third-party vendors like Progress Telerik and DevExpress is being worked on.
Visual Studio and Git repos
The planned improvements to working with code stored in any Git repo didn’t make it into 16.6 (and they won’t be the default experience for some time) but the preview is in the Visual Studio 16.7 Preview 1 release. This will let you initialise and push a repo to any Git host, create and manage branches, commit code and resolve merge conflicts inside Visual Studio: if you’ve used the preview already, the main change here is new icons that make it easier to see which branches are local or remote.
Preview 1 and XAML
Preview 1 also has some new XAML tools: an inline colour visualizer that shows blocks of the colour you specify in your code right in the code, a faster WPF XAML Designer for .NET Framework projects that puts common properties for built-in controls on a Suggested Actions menu that appears when you select buttons, labels, checkboxes and other controls, and a way of seeing when XAML data bindings have failed.
This puts a warning icon for binding failures in WPF and UWP applications on the toolbar, and adds a window that shows details of binding failures in WPF, UWP and Xamarin.Forms projects in one place where they’re easy to search, sort or group.
Visual Studio Codespace
Visual Studio Codespaces and the new GitHub Codespaces give you a cloud development environment running on Linux (in public preview) or Windows (private preview) complete with runtimes, linters, debuggers and extensions that you can access from a browser on any device, with source code and configuration stored in a git repo. That now has support for .NET Core development (although not yet the new Windows Forms designer).
And if you’re already using Visual Studio, you’ll be able to access Codespaces from inside your IDE to build edit, build, debug and test ASP.NET Core web apps, .NET Core libraries, .NET Core console apps, and cross-platform C++ CMake projects.
That’s useful if you’re using a different SDK and related tools for one specific project and you don’t want to load up your PC with all those dependencies, or if you need to work on a really large application that would be slow on your machine. This is currently in private preview using the new Windows-based Codespaces.
IntelliCode in Visual Studio can already be personalised to give more useful code completion suggestions for the types and APIs you use in your own code (if they’re not found in the 3,000+ open source GitHub repos with more than 100 stars that the IntelliCode was trained on). Keeping the Team Completions model for your codebase up to date is exactly the kind of semi-regular and rather tedious task GitHub Actions is good at automating, so the Visual Studio team has created an action to run it as part of a CI workflow that updates the model on each commit.
Microsoft Teams and Visual Studio
Microsoft is ramping up Teams as an application hub and while the low code/no code solution for building those apps is Power Apps, there’s a new Teams extension in preview so pro developers can build and publish those apps (using NodeJS and Yarn) with both Visual Studio and Visual Studio Code.
Visual Studio Code new features
One much-requested feature for Visual Studio Code: it can now sync your settings and the extensions you have installed between different devices (that’s currently in preview). GitHub Actions for Azure are now integrated into Code through an extension to make it easier to deploy code from a GitHub repo directly to Azure: that covers multiple services including web apps, Azure Functions, Azure SQL and MySQL. If your code isn’t only on GitHub, the new Visual Studio Code Deploy to Azure extension lets you generate CI/CD pipelines through either GitHub Actions or Azure Pipelines to AKS or Azure App Service to deploy code from GitHub, Azure Repos or even locally stored code.
If you’re using Codespaces with Visual Studio Code, you will soon be able to add chat and audio to your code sharing session, so you don’t have to make a separate call to talk about the code you’re looking at.
Visual Studio on Mac
The Mac release of Visual Studio also gets the new integrated terminal, plus templates for building Blazor WebAssembly applications (including PWAs) and gRPC projects with ASP.NET Core. It also has a new way to sign in to Visual Studio that promises to fix issues some developers have seen.
Other developer platform updates at Build
There also were plenty of developer platform updates at Build that Visual Studio developers will be interested in, like general availability of Blazor WebAsembly, more progress on the upcoming .NET 5 release plus the evolution of the Xamarin Forms toolkit into .NET Multi-platform App UI (MAUI for short) for .NET 6, details of what will be in C#9 and the on-going unification of UWP and Win32 APIs in Windows as Project Reunion.
Want to learn more?
Get in touch with Grey Matter’s team of Visual Studio product and licensing specialists! They’ll be happy to answer your questions: email@example.com