What’s New with Visual Studio 2019 V16.10?

We are pleased to announce the release of Visual Studio 2019 V16.10 GA and V16.11 Preview 1. This release makes our theme “Developer Productivity and Convenience” universally applicable to Visual Studio users! We added C ++ 20 features, optimized Git integration, analysis tools, and many other features that make development more efficient.

Download the latest version of Visual Studio to try out the new features in 16.10. As always, we want you to provide feedback and interaction through our developer community. Install Visual Studio 2019 V16.10


Our compiler and STL are now fully functional and compliant with the latest available C++20 standard! 16.10 brings some highly anticipated features: calendars, time zones, and
. These features are all available with the/STD: C ++ Latest switch. The/STD: C ++20 switch is not yet available, however, because some features are expected to be fixed in a defect report (ISO C ++20 bug fix) in an ABI incompatible manner (see Microsoft/STL Issue #1814 for more details).
is a new fmtlib-based text formatting tool. It provides a fast and secure alternative to IOStreams and the printf family:

auto version = 20; STD ::format(" STL is now C++{} feature-complete!" , version);

Calendars and time zones are extensions to the existing < Chrono > tool. They provide a type-safe, time-zone aware way to represent and manipulate dates and times.

STD ::chrono::year_month_day world_bee_day = May/20d/2021y STD ::format("Buzz Buzz on %F!" , world_bee_day);

In addition, we have improved the IntelliSense experience for modules, scopes and concepts. Go to a definition applies both to the module itself and to definitions imported from the module. Compiler access is notoriously difficult for compilers, but IntelliSense can now do it for you. In addition, the concept names defined are automatically completed.

Now, in addition to x64, x86 and ARM64 also support the LLVM OpenMP runtime. Point to it with the /openmp: LLVM switch. If you want to use C ++ 20-style coroutines but target C ++ 11 or C ++ 14, you can now use the /await:strict switch to get the desired behavior. We have improved the debugging and visualization of coroutines. In particular, the visualization of STD ::coroutine_handle now shows the original coroutine function name and signature, as well as the current hangpoint.

If you are using our CMake support, you can now specify the configuration using cMakePresets instead of cMakess. json. This format is consistent across Visual Studio, Visual Studio Code, and any other tool that supports this new standard.

Git productivity

The status bar has a new branch selector that allows you to filter local and remote branches and perform regular actions from the right-click shortcut menu.

Now, when you select a branch separately, the branch selector in the status bar and the Git Changes window move to a local or remote branch.

Filter and switch local Git repositories from the status bar repository selector. Right-click on the shortcut menu to remove items from the list.

Click the unpushed commit button in the status bar and sync commands from the Git menu to synchronize (pull and push) your branches to remote locations.

Even if there is no inbound commit, it can be retrieved and pulled from the history pane of the Git Repository window. Access these sections from the status bar or the keyboard shortcut Ctrl+0+Y.

Selecting a commit in the Git Repository window allows you to view its details and compare file changes without having to navigate to other Windows. Select both submissions and right-click to compare them in the same window. Pop-up the details into their own window and display them in full screen to gain insight into the changes.

Look at the number of deletes and inserts in the file, and change the layout of the comparison.

Now you can do more from the Git Changes window. Toolbar ICONS are customizable, and you can choose which actions to display. You can sync with more than one remote from the extension menu. You can also open the repository’s remote Web page in a browser.

When opening the Azure DevOps Git repository, automatically reconnect or prompt to establish an initial Azure DevOps connection. This allows access to work items and builds in the open repository.

When a rebuild or merge conflict is resolved, the merge editor and the shortcut menu display the branch names of the current and incoming branches. This fixes the problem of confusing source and target terms.

We’ve added menu items that are shortcuts to PR creation and list pages, making it easier to create and view pull requests. The menu is dynamic, based on whether your repository is on GitHub or Azure DevOps.

Git set

We’ve added some new options in Git > Settings to manage opening and switching repositories. You can now leave the current solution open when you switch to another repository.

You can also choose not to load the repository root folder when you open the repository. This will make Solution Explorer empty and you will not get a list of solutions.

However, if you choose to open the root folder, Visual Studio will no longer automatically load the solution. Instead, you’ll see the available folder views and solutions in a list. You can change this behavior by toggling the check box with Git > Settings.

You can choose to move the branch from the Git Repository window by double-clicking on the branch name. If you want to change this behavior, toggle the check box in Git > Settings.

Performance profiler

The Performance Profiler’s startup page now has links to help users find online documentation that details how to use these tools, as well as our toolbox video series. You can use them to learn more about these tools and learn how to better identify areas in your code for tuning and validating changes.

The.NET object allocation tool in Performance Profiler was the first tool to transition to our new analysis engine, which is significantly faster and offers more functionality. After the collection, you get the results and build the call tree faster (about a 40 percent increase). We now also support SourceLink to pull the source code, so you can see exactly where the code is allocated, even if it’s not in your code.

This requires symbols corresponding to the code, which can be enabled by pulling down from the Microsoft Symbol Server and from the Debug > option > Symbol.

The container

This release offers some exciting features for users of the Docker container tool. You can now run any service composition defined in the composite file and enjoy improved container and image management in the container window. For more information, see the container feature announcement in our 16.10 Preview 3 blog.

.NET productivity

Our.NET team has brought you several features to help you continue to increase your productivity.

We have added the ability to “delete unused reference commands”. This command allows you to clean up unused project references and NuGet packages. By default, this option is turned off, but you can enable it under the Menu Tool > Options > Text Editor > C # > Advanced. Select Remove unused reference commands in Solution Explorer (Experiment). Once this option is enabled, the delete unused reference command will appear in the right-click menu of the project name or dependency node.

When you choose to delete unused references, a dialog box opens. You can then view all references to be deleted, but you can also choose to keep any references that you wish to keep.

The completion of IntelliSense

When the type is known, even if no Enum value is entered, this is done by the additional IntelliSense of the Enum value. We have also extended this option to include cast, indexer, and operator completion.

You now have a completion option to automatically insert parameters when you write a method call.

This feature is turned off by default, so you need to enable it in the Tools > option > text editor > C # > IntelliSense, then select Tab twice insert parameter (experiment).

To use this feature, first write a method call, and then press the Tab key (Tab + Tab) twice. Note that the method call contains parameters based on the default value of the method. Use the parameter information to loop through the list of parameters that you want to insert by pressing the up and down arrow keys. Begin by entering a parameter to bring up the IntelliSense completion list and enter a semicolon, which submits the parameter and adds a semicolon to the end of the method call.

Visualize and navigate the inheritance chain

You now have a visual presentation for navigation and checking inheritance.

By default this option is turned off, so you need to open it in the tool > Options > Text Editor > C # > Advanced and select Show Inheritance Margins. Enabling inherited margins adds new ICONS to the margins that represent code implementations and overrides. Click the inheritance margin icon to display the inheritance options to which you can navigate.

Test the resource manager accessibility improvements

We made some updates to the Test Explorer to improve the accessibility of the keyboard and the availability of the Test details window and log files. For more information, see Test Experience Accessibility Improvements in the 16.10 Preview 3 blog.

WinForms update

We have refactored the Behavioral Services for Visual Studio 16.10. This has resulted in significant performance improvements for the new WinForms designer for.NET Core 5 and 6. This also fixes a number of issues related to selecting, dragging and dropping multiple controls.

XAML tool update

We constantly improve on existing features and add new ones to make your XAML UI more efficient.

The XAML designer is fast

You can now quickly change the properties of the control by using the pop-up menu behind the bulb that is displayed for the selected control.

When you select a control in the XAML Designer, you will see a light bulb. Once you click the control, a list of the most commonly used properties for this particular control is displayed, saving you time to find them in the Properties Explorer or to enter code in the XAML editor.

Supported controls:

  • WPF: Border, Button, Canvas, Checkbox, ComboBox, Grid, Image, Label, ListBox, ListView, StackPanel, TextBlock, TextBox..
  • UWP: Border, Button, Canvas, CheckBox, ComboBox, Grid, HyperlinkButton, Image, ListBox, ListView, NavigationView, RadioButton, Slider, StackPanel, TextBlock, TextBox.

This feature is available for UWP, WPF Core, and WPF Framework(enable the “New WPF XAML Designer for.NET Framework” feature flag). You can also create your own actions, see the XAML Designer Extensibility GitHub for more information.

XAML sample data

In general, to see how a control looks with data values, you must implement all data bindings, populate the database with values, and run the application. With this feature, you can see the appearance of the control from the “fake” data in the designer. Set d:ItemSource='{d:SampleData}’ on the ListBox, ListView, or DataGrid. The control will automatically fill in a “fake” data that matches your DataTemplate and BindingPaths. This data is displayed in the designer and does not affect the source code. You can change the number of generated items using the itemCount attribute, for example: D :ItemSource='{D: Sampledata ItemCount=3}’, which is set to 5 by default.

New features in Visual Studio 2019 V16.11 Preview 1

The.net thermal overload

In this release, we are pleased to offer the first version of a new hot-reload user experience that can be used when editing code files for applications such as WPF, Windows Forms, ASP.NET Core, the console, and more. With hot overloading, you can now modify your application management source code at run time without pausing execution or using breakpoints. Instead, simply make the supported changes and apply them immediately using the new Apply Code Changes button in the toolbar.

Make changes and hot load the WPF application.

In this update to Visual Studio, the new experience is already available when you run your application under the debugger (F5), and it is driven by the edit and continue (ENC) mechanism. .NET hot reloading can also work with XAML hot reloading to make UI and code backend changes possible in desktop applications such as WPF or WinUI.

ENC and hot overloading have the same limitations, so not every type of editing is supported. A complete list of what is and is not supported can be found in our documentation.

Hot reloading is now also available in. NET 6 Preview3 or later under the CLI tool, see more details. Blogs published by.net.

This is the beginning of our journey in Visual Studio 2022 and. In future versions of.NET 6+, we will seek and improve on this experience, such as reducing the number of unsupported edits from Visual Studio when launching an application with hot reloading without a debugger (Ctrl-F5), allowing editing of Razor pages, and supporting hot reloading and. NET Maui applications, etc. If you want to learn more about our approach to this technology, please see our detailed post on the.NET blog.

We really want you to try hot reloading in your applications and provide feedback through Visual Studio’s feedback feature.


Visual Studio 16.11 Preview 1 has been added. NET Maui support! .NET Multiplatform Application UI (MAUI), which will be released in November, is the best way to write cross-platform applications for iOS, Android, Windows, and Mac. .NET 6 Preview 4 has released new.NET Maui features today, including single-project improvements, capabilities for all supported platforms, and Blazor Hybrid Desktop support! Visual Studio 16.11P1 allows you to open, build, and debug.NET Maui applications from the IDE, and add functionality to the new single-project architecture. In addition, you can use the New Project Configuration Wizard to create new.NET Maui applications!

.NET Maui demo applicationWeatherTwentyOne

With.NET Maui and Visual Studio, you can target mobile devices and desktops with just one project in your solution. Images, fonts, application information, and even the startup screen can be defined in a project and deployed to each platform at compile time. With multiple targets, you can debug on any supported platform without having to maintain different projects for different target frameworks. To learn more about the new.NET Maui Single Project Architecture, you can check out the Xamarin Community Conference in May 2021!

Locate Android, iOS, Windows, and Mac from within a single project using.NET Maui’s single project architecture. To try.NET Maui right away, download Visual Studio 16.11 and follow the Instructions installed in the NET Maui sample repository. NET 6 Preview SDK! For more information, see.NET Maui Preview 4.

Install Visual Studio 2019 V16.11 Preview 11

To experience the latest features that Visual Studio 2019 has to offer, download the preview now. Don’t forget to report problems to the developer community or give us feedback! You can also ask any development questions on the Microsoft Q&A forum.