Visual Studio 2019 Preview Release Notes
This release is not "go-live" and not intended for use on production computers or for creating production code. For instructions on installing and updating Visual Studio 2019, see this documentation on updating Visual Studio 2019 to the most recent release.
What's New in Visual Studio 2019
Visual Studio 2019 Preview Releases
- June 25, 2020 — Visual Studio 2019 version 16.7 Preview 3.1
- June 23, 2020 — Visual Studio 2019 version 16.7 Preview 3
- June 02, 2020 — Visual Studio 2019 version 16.7 Preview 2
- May 19, 2020 — Visual Studio 2019 version 16.7 Preview 1
Visual Studio 2019 Blog
The Visual Studio 2019 Blog is the official source of product insight from the Visual Studio Engineering Team. You can find in-depth information about the Visual Studio 2019 releases in the following posts:
- Visual Studio 2019 v16.6 Preview 2 Available Today!
- Releasing Today! Visual Studio 2019 v16.6 & v16.7 Preview 1
- See What's New in Visual Studio 2019 version 16.6 Preview 3!
- Visual Studio 2019 version 16.6 Preview 2 Brings New Features Your Way
- Visual Studio 2019 version 16.5 is released!
- 'Tis the Season for Visual Studio 2019 v16.4 Release
- Visual Studio 2019 v16.4 Preview 2, Fall Sports, and Pumpkin Spice
- .NET Core Support and More in Visual Studio 2019 version 16.3 - Update Now!
- Visual Studio 2019 version 16.3 Preview 2 and Visual Studio 2019 for Mac version 8.3 Preview 2 Released!
- Visual Studio 2019 version 16.2 and 16.3 Preview 1 now available
- Visual Studio 2019 version 16.2 Preview 2
- Visual Studio 2019 version 16.1 and Preview 16.2 Preview
- Visual Studio 2019: Code faster. Work smarter. Create the future.
released June 23, 2020
In This Release of Visual Studio 2019 version 16.7 Preview 3.1
- Fixed an issue blocking private preview users of Visual Studio Codespaces from accessing existing Codespaces.
released June 23, 2020
In This Release of Visual Studio 2019 version 16.7 Preview 3
- Our remote C++ support now supports a wider range of Linux distros and shells, including sh, csh, bash, tsch, ksh, zsh, and dash. You can override the choice of a shell for a remote connection by modifying the new "shell" property via ConnectionManager.exe. This support has been tested with both MSBuild-based Linux projects and CMake projects targeting a remote Linux system or WSL.
- You can now use Ninja (a build system that evaluates incremental builds very quickly) to improve incremental build times for MSBuild-based Linux projects. You can opt into this feature by setting "Enable Incremental Build" to "With Ninja" in the General Property Page. Ninja (ninja-build) must be installed on your remote Linux system or WSL.
XAML Tools (WPF, UWP & Xamarin.Forms)
XAML Hot Reload:
- In-app Toolbar Improvements: We have further refined the in-app toolbar experience that is part of the XAML Hot Reload tooling workflow for WPF & UWP. Changes include a shorter toolbar so that it no longer covers the running application, and a change in the collapse mechanism which when clicked will now collapse the XAML Hot Reload text first, then collapse the bar fully on the second click.
- Expanded Design-time Data Support for WPF & UWP: In this release we are introducing a new design-time data feature for WPF .NET Core and UWP developers. The feature will extend the current list of accessible design time properties through the use of the d: prefix. This feature will be familiar to Xamarin.Forms developers, as it makes available the same approach of using a “d:” prefix to indicate a property that should only be rendered at design-time and never gets compiled into the running app making it very safe to use for testing. In this release this feature works with all the out-of-the-box controls for WPF and UWP and all properties. We are also actively exploring how to enable this feature for 3rd party and custom controls in future preview releases. While this feature is on by default, you can always enable/disable this preview by going to “Options > Environment > Preview Features” and enable “Expanded Design-time Data Support”.
- XAML Designer Refresh Button: We have added a refresh button to the XAML designer, this new icon can be found in the bottom-left icon area near the zoom level indicator. This refresh action does the equivalent reset of closing the designer view and re-opening it for the rare situations where this is required to resolve a rendering issue. This feature is available for WPF .NET Core and UWP developers.
- XAML Suggested Actions - Extensibility: In this release we are introducing extensibility for 'Suggested Actions'. Now you will be able to customize and build your own suggestion dialog for your controls. For more details see our documentation in GitHub
XAML Binding Failures diagnostic improvements:
In this release we continue to refine the XAML Binding Failures diagnostic preview feature, for a full description see below.
The XAML Binding Failures tool window improvements include:
- “Combine Duplicates” toolbar button to let you decide if multiple instances of the same binding failure should be combined into a single row.
- “Copy Original Error” context menu item to let you quickly copy the original error text as it appeared in the debug output window.
- “Reset Columns” context menu item to easily reset all table columns and sorting to the default state.
The in-app toolbar now has an improved icon for binding failures and displays the total number of binding failures next to the icon.
Ready to try these new features? to enable both the new XAML Binding Failures window and in-app toolbar experience go to ”Options > Environment > Preview Features” and enable “XAML Binding Failure Window”.
XAML Code Editor:
- Color Visualizer: We have further refined our new color visualizer in the XAML code editor for WPF .NET Core, WPF .NET Framework and Xamarin.Froms projects. In this release we have added support for visualizing colors coming from resources, which was previously not supported in the last preview.
There is now a warning and code fix when a suppression operator is present but has no effect. A second code fix suggesting the correct negating expression is also available. Place your cursor on the suppression operator. Press (Ctrl + .) to trigger the Quick Actions and Refactorings menu. Next, select from one of the following:
- To remove the operator completely, select Remove operator (preserves semantics):
- To negate the expression, select Negate expression (change semantics):
- You can also negate the expression with the new C# 9
notpattern if it is available in your project:
You can now generate properties when generating a constructor in a type. Place your cursor on the instance. Press (Ctrl + .) to trigger the Quick Actions and Refactorings menu. Select Generate constructor in
- Create a new Git repository, starting from any folder or a brand new folder
- View and manage Git branches in a tree view within a new Git Repository window
- Switch between and interact with the history graph of each branch in the new Git Repository window
Top Issues Fixed in Visual Studio 2019 version 16.7 Preview 3
From Developer Community
- Recurring null reference when reopening documents
- View History on context menu in Solution Explorer doesn't do anything
- IDE crash in background after opening new solution
- Visual Studio 2019 version 16.7 Preview 1 crashes during Aapt2DaemonStart()
- ServiceHub.Host.CLR.x64 has stopped working
- Write access violation in destructor of const global object
- Connection to Mac is lost on every build
- IntelliSense does not work when creating a new class in a new folder
- Unable to add Xamarin.Forms Item to .shproj
- Code Linter for C++ not in Preview Options
- System.IO.FileNotFoundException Microsoft.VisualStudio.Shell
- Do not show TODOs in task list from SDK headers
- Visual Studio 2019 hangs when opening a web.config file
- After updating to 16.7.0 preview 2 cannot add new Views
- Fold expression does not work directly in SFINAE expression
released June 02, 2020
In This Release of Visual Studio 2019 version 16.7 Preview 2
- New C++20 Standard Library features have been implemented. Please refer to the STL Changelog on GitHub for a detailed list.
- You can now edit and set default remote SSH connections in the Connection Manager. This means you can edit an existing remote connection (e.g. if its IP address changed) and set default connections to be consumed in CMakeSettings.json and launch.vs.json. Remote SSH connections allow you to build and debug C++ projects on a remote Linux system directly from Visual Studio.
- Enhanced IntelliSense support for Clang on Windows (clang-cl) in Visual Studio. The clang include path now includes the clang libraries, we've improved in-editor squiggle display when using the std library, and we've added support for C++2a in clang mode.
- You can now try out underlining code errors and see more suggested quick fixes in C++ projects. Enable this feature under Tools > Options > Environment > Preview Features > IntelliSense code linter for C++. Learn more on the C++ Team Blog.
- We've added four new code analysis rules to incorporate additional safety features into C++: C26817, C26818, C26819, and C26820.
- Code fixers have been introduced for the most common types of problems experienced by users with Android layout files.
- The Xamarin.Forms template selection experience now has a fresh and more illustrative look, and the Flyout and Tabbed templates now utilize Shell. Read more about Shell here. If for some reason you don't wish to use Shell, use the Blank template.
Known issue: A failed dependency check occurs when building an Android project. This can be resolved by editing the
.csproj file with the following property:
- Quick Info now displays the diagnostic ID along with a help link where you can easily navigate to our documentation to learn more about warnings and errors in your code.
Save and close an open folder or solution before starting a new clone operation
View commit or stash message errors clearly in the commit text box
Resolve merge conflicts with a Git focused merge editor using:
- An info bar in files containing merge conflicts that prompts you to open the merge editor
- More informative titles and captions, and less clutter in the merge editor
- Diffs within conflicts that align matching lines, show word level differences, and display visible whitespace when it is the only difference.
- Two-way merges for file level add/add conflicts
- The ability to resolve all conflicts to one side or the other with a single click
- A toggle to focus on just conflicts, ignoring non-conflicting differences
Show Toolbox items from a NuGet package without having a package reference
Many control library authors want their controls to be seen in the Toolbox even when the current project hasn't referenced the library yet, as this helps with discoverability. WPF .NET Framework SDKs have historically accomplished this using registry entries, but this is not supported by .NET Core. For WPF .NET Core, Toolbox can now be populated with controls from VisualStudioToolsManifest.xml files found within WPF .NET Core NuGet packages in NuGet fallback folders. For more details, see the XAML Designer Extensibility GitHub repo.
Local Process with Kubernetes
Local Process with Kubernetes allows you to write, test and debug your .NET code on your development workstation while connected to your Kubernetes cluster with the rest of your application or services. By connecting your development workstation to your cluster, you eliminate the need to manually run and configure dependent services on your development machine. Environment variables, connection strings and volumes from the cluster are available to your microservice code running locally. There is no need for extra assets, such as a Dockerfile or Kubernetes manifests. Run, debug, and test your .NET code as you normally would.
To enable Local Process with Kubernetes, go to Tools > Options > Envrionment > Preview Features and select "Enable local debugging for Kubernetes services".
For .NET console applications, an additional step is required. Install the "Microsoft.VisualStudio.Azure.Kubernetes.Tools.Targets" Nuget Package.
Top Issues Fixed in Visual Studio 2019 version 16.7 Preview 2
- Fixed WMI Provider component installation failure.
From Developer Community
- Visual Studio 2019 crash when menu View->Other windows is opened
- Team Explorer not loading after update to mandatory latest version of Visual Studio 2019
- Task Runner Explorer calls Task two times on Project Open
- Visual Studio 2019 .NET Framework WPF controls are showing multiple times
- Reattach does not work when connection type was Docker (Windows Containers)
- Aggregate initialization is not performed on dynamic array
- Not working option TexEditor/c/c++/Advanced/Enable surround with braces
- Bogus error C2668: "ambiguous call to overloaded function" for call to overloaded function templates with non-type template parameter
- Visual Studio 16.4 is busy
- CMake "auto-configure" always deletes cache after editing CMakeLists.txt
released May 19, 2020
In This Release of Visual Studio 2019 version 16.7 Preview 1
Define playlists dynamically
You can now define playlists dynamically based on Project, Class, or Namespace. This means you can configure a playlist to include everything in a certain project/class/namespace; any new test added to that group will automatically be included in your playlist!
- Create a playlist by right clicking on a project, namespace, or class grouping in the Test Explorer.
- Edit what groups are included in the playlist by clicking on the edit button in the tool bar. Check boxes will appear. Edit groups as desired.
- Instead of being a static list of tests these playlists dynamically update based on rules. If you want to better understand what rules are generating your dynamic playlist, save the playlist file to disk with the save button and view the rules generated in the xml.
- You can continue to include/exclude individual tests and the playlist will be able to either update its dynamic rules or switch back to keeping track of tests as a static list. You can also use traits to define a dynamic group by editing the playlist xml file directly.
Windows Forms Designer for .NET Core
The Windows Forms designer for .NET Core projects is now available. To enable the designer in Visual Studio, go to Tools > Options > Environment > Preview Features and select the Use the preview Windows Forms designer for .NET Core apps option.
In this release the following controls are now supported along with other improvements:
- UserControl and custom controls infrastructure
- Fundamentals for third-party controls support
- Fundamentals for data binding support
- Improvements in designer interaction with the TableLayoutPanel
Inline Color Previews in XAML Code Editor: An inline color visualizer is now available in the XAML Code Editor:
XAML Binding Failures Diagnostic:
In this release we’re adding new features to Visual Studio that makes becoming aware of and seeing the details of XAML binding failures easier, these improvements include:
- New XAML Binding failure indicator icon in the in-app toolbar experience for WPF and UWP developers. This icon will change red if at least one binding fails and highlighting it will show you the total number of failed bindings in the tooltip. Clicking the icon will take you to the new XAML Binding Failures panel
- New XAML Binding Failures panel that takes the binding failures that were previously only available in the Output window and makes them easy to review in the new dedicated experience with features such as sorting, searching and grouping of similar errors. This panel works for WPF, UWP and Xamarin.Forms projects (note: requires Xamarin version 18.104.22.1686-pre3 or higher)
This feature is still in development and is only available if enabled by customers. To enable this experience, go to Options > Environment > Preview Features and enable “XAML Binding Failure Window”.
Known Limitations: Clicking on binding failures in the panel does not yet navigate to code. Also attaching to a running process will not work, you must F5 into the debug experience for this experience.
XAML Designer Suggested Actions enables easy access to common properties when a control is selected within the XAML Designer. To use this feature first enable it through Options > Preview Features > XAML Suggested Actions. Once enabled click on a supported control and use the lightbulb to expand and interact with the Suggestion Actions UI. In this release supported controls include:
- For UWP: Border, Button, Canvas, CheckBox, ComboBox, Grid, HyperlinkButton, Image, ListBox, ListView, NavigationView, RadioButton, Slider, StackPanel, TextBlock
- For WPF: Border, Button, Canvas, CheckBox, ComboBox, Grid, Image, Label, ListBox, ListView, StackPanel, TextBlock, TextBox.
This feature is available for UWP, WPF .NET Core and WPF .NET Framework (with enabled “New WPF XAML Designer for .NET Framework” feature flag) applications and doesn’t support extensibility, nor is it feature complete.
The New WPF XAML Designer for .NET Framework Projects is now available for early preview. This brings the same designer and extensibility support available for WPF .NET Core developers to WPF .NET Framework. Benefits of this improved XAML designer includes faster load performance, 64-bit configuration support (custom controls would load normally just like they do in x86 configuration), improved stability and new features such as Suggested Actions.
To get started, go to Options > Preview Features, select “New WPF XAML Designer for .NET Framework” and restart Visual Studio. This feature is only available in the Preview channel for early testing; its final release details have not yet been determined. We encourage all WPF .NET Framework customers to give this designer a try and report any issues you encounter through the VS Feedback Hub.
- We've added first-class support for debugging CMake projects on remote systems with gdbserver.
- Find memory corruption errors easily with an experimental implementation of AddressSanitizer for C++ in Visual Studio, now available for x64 native projects. We also now support the use of debug runtimes (/MTd, /MDd, /LDd).
- The implementations of Completion and Quick Info have been updated to better support LiveShare scenarios.
- There is now a quick action to add a debugger display attribute to a class. This allows you to pin properties within the debugger programmatically in your code. Place your cursor on the class name. Press (Ctrl+.) to trigger the Quick Actions and Refactorings menu. Select Add ‘DebuggerDisplay` attribute. This will add the debugger display attribute to the top of your class and generate an auto method that returns ToString() which you can edit to return the property value you want pinned in the debugger.
- There is now a code fix for accidental assignments or comparisons to the same variable. Place your cursor on the warning. Press (Ctrl+.) to trigger the Quick Actions and Refactorings menu. For accidental assignments, select Assign to
.value. For accidental comparisons, select Compare to .value.
- You can now generate comparison operators for types that implement IComparable. Place your cursor either inside the class or on IComparable. Press (Ctrl+.) to trigger the Quick Actions and Refactorings menu. Select Generate comparison operators. A boiler plate will be generated for you with the comparison operators.
- You can now generate IEquatable operators when generating .Equals for structs. We already had a refactoring to Generate Equals and GetHashCode for value types. Now with structs we will automatically add the IEquatable as well as the equals and not equals operators for you. Place your cursor within the struct. Press (Ctrl+.) to trigger the Quick Actions and Refactorings menu. Select Generate Equals(object).
- You can now create and assign properties or fields for all unused constructor parameters. We already had a quick action that allowed you to do this on an individual parameter, but now you can do it for all unused parameters at once. Place your cursor on any of the remaining parameters. Press (Ctrl+.) to trigger the Quick Actions and Refactorings menu. To create and initialize properties, select Create and assign remaining as properties. To create and initialize fields, select Create and assign remaining as fields.
- There is now IntelliSense completion in DateTime and TimeSpan string literals. Place your cursor inside the DateTime or TimeSpan string literal and press (Ctrl+Space). You will then see completion options and an explanation as to what each character means. Both the date time format and an example will be provided.
- You can now add a parameter within the Change Signature dialog. Place your cursor within the method’s signature. Press (Ctrl+.) to trigger the Quick Actions and Refactorings menu. Select Change signature. The following dialog will open where you can now select Add to add a parameter. Once you select Add, the new Add Parameter dialog will open. The Add Parameter dialog allows you to add a type name and a parameter name. You can choose to make the parameter required or optional with a default value. You can then add a value at the call site and choose a named argument for that value or you can introduce a TODO variable. The TODO variable puts a TODO in your code so you can visit each error and go through each call site independently and decide what to pass. For optional parameters you have the option to omit the call site completely.
- Analyzer authors can now use CompletionProviders for IntelliSense completions when shipping their analyzers with NuGet. Before, library authors would have to create a separate VSIX since CompletionProviders was only available in VSIX. Now library authors can implement IntelliSense completions in the NuGet package where their analyzers are, and they don’t need to do it separately. Completion providers implemented in NuGet packages will also provide suggestions specific to individual projects and will automatically work in each IDE supporting the feature.
Top Issues Fixed in Visual Studio 2019 version 16.7 Preview 1
From Developer Community
- Missing initialization for POD types when object create in the heap
- VC compiler serious bug
- Internal compiler error with C++/CLI indexed property in Visual Studio 2019 version 16.5
- UI unresponsive exception is thrown on custom extension
- Internal compiler error on indexer access
- Upgrade in C++ runtime from 14.24.28127 to 14.25.28610 breaks building Chromium with clang_cl
- Git stash error
- ISetupConfiguration.GetInstanceForCurrentProcess throwing COMException: Element not found
- Xamarin.IOS fails to build with MessagingRemoteException
- Template class friend declaration ignored
- Excluding items from Schema Compare crashes Visual Studio if not done in very small batches
- Visual Studio 2019 v16.5.1 is extremely slow.
- Cannot use ClassName::* in function breakpoint to set breakpoints on all methods of C++ class in vs2019
- Feedback tool has broken sign out image link
- Compilation error C2737 with valid code
See all open issues and available workarounds in Visual Studio 2019 by following the below link.
We would love to hear from you! For issues, let us know through the Report a Problem option in the upper right-hand corner of either the installer or the Visual Studio IDE itself. The icon is located in the upper right-hand corner. You can make a product suggestion or track your issues in the Visual Studio Developer Community, where you can ask questions, find answers, and propose new features. You can also get free installation help through our Live Chat support.
Take advantage of the insights and recommendations available in the Developer Tools Blogs site to keep you up-to-date on all new releases and include deep dive posts on a broad range of features.
Visual Studio 2019 Release Notes History
For more information relating to past versions of Visual Studio 2019, see the Visual Studio 2019 Release Notes History page.