Visual Studio 2019 version 16.4 Release Notes
Click a button to download the latest version of Visual Studio 2019. For instructions on installing and updating Visual Studio 2019, see the Update Visual Studio 2019 to the most recent release. Also, see instructions on how to install offline.
What's New in Visual Studio 2019 version 16.4
Visual Studio 2019 version 16.4 is the second supported servicing baseline for Visual Studio 2019. Enterprise and Professional customers needing to adopt a long term stable and secure development environment are encouraged to standardize on this version. As explained in more detail in our lifecycle and support policy, version 16.4 will be supported with fixes and security updates for one year after the release of the next servicing baseline.
In addition, now that version 16.4 is available, version 16.0, which was the last servicing baseline, will be supported for an additional 12 months and will go out of support in January 2021. Note as well that versions 16.1, 16.2, and 16.3 are no longer under support. These intermediary releases received servicing fixes only until the next minor update released.
You can acquire the latest most secure version of Visual Studio 2019 version 16.4 in the downloads section of my.visualstudio.com. For more information about Visual Studio supported baselines, please review the support policy for Visual Studio 2019.
Visual Studio 2019 version 16.4 Releases
- December 10, 2019 — Visual Studio 2019 version 16.4.1
- December 3, 2019 — Visual Studio 2019 version 16.4.0
Archived Release Notes
- Visual Studio 2019 version 16.3 Release Notes
- Visual Studio 2019 version 16.2 Release Notes
- Visual Studio 2019 version 16.1 Release Notes
- Visual Studio 2019 version 16.0 Release Notes
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:
- '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 December 10, 2019
Top Issues Fixed in Visual Studio 2019 version 16.4.1
- Fixed "the write operation failed. you must first acquire write access from dataschemamodelcontroller" error trying to publish a database
- Fix ExecutionEngineException exceptions when using SignalR on iOS devices in some configurations
- Runtime Fix "CEE_RET: value type stack" crash when interpreter was enabled with some libraries
- May allow mitigation of a Per-Monitor awareness related crash in Visual Studio
Security Advisory Notice
CVE-2019-1349 Git for Visual Studio Remote Excecution Vulnerability due to too lax restrictions on submodule names
A remote code execution vulnerability exists when Git runs into collisions of submodule names for directories of sibling submodules. An attacker who successfully exploited this vulnerability could remote execute code on the target machine. The security update addresses the vulnerability by taking a new version of Git for Windows which requires the directory for the submodules’ clone to be empty.
CVE-2019-1350 Git for Visual Studio Remote Excecution Vulnerability due to incorrect quoting of command-line arguments
A remote code execution vulnerability exists when Git interprets command-line arguments with certain quoting during a recursive clone in conjunction with SSH URLs. An attacker who successfully exploited this vulnerability could remote execute code on the target machine. The security update addresses the vulnerability by taking a new version of Git for Windows which fixes the issue.
CVE-2019-1351 Git for Visual Studio Arbitrary File Overwrite Vulnerability due to usage of non-letter drive names during clone
An arbitrary file overwrite vulnerability exists in Git when non-letter drive names bypass safety checks in
git clone. An attacker who successfully exploited this vulnerability could write to arbitrary files on the target machine. The security update addresses the vulnerability by taking a new version of Git for Windows which fixes the issue.
CVE-2019-1352 Git for Visual Studio Remote Excecution Vulnerability due to unawareness of NTFS Alternate Data Streams
A remote code execution vulnerability exists in Git when cloning and writing to .git/ directory via NTFS alternate data streams. An attacker who successfully exploited this vulnerability could remote execute code on the target machine. The security update addresses the vulnerability by taking a new version of Git for Windows which has been made aware of NTFS alternate data streams.
CVE-2019-1354 Git for Visual Studio Arbitrary File Overwrite Vulnerability due to not refusing to write out tracked files containing backslashes
An arbitrary file overwrite vulnerability exists in Git when tree entries with backslashes and malicious symlinks could break out of the work tree. An attacker who successfully exploited this vulnerability could write to arbitrary files on the target machine. The security update addresses the vulnerability by taking a new version of Git for Windows which does not allow this usage of backslashes.
CVE-2019-1387 Git for Visual Studio Remote Execution Vulnerability due to too lax validation of submodule names in recursive clones
A remote code execution vulnerability exists in Git when cloning recursively with submodules. An attacker who successfully exploited this vulnerability could remote execute code on the target machine. The security update addresses the vulnerability by taking a new version of Git for Windows which tightens validation of submodule names.
A spoofing vulnerability was detected in the Visual Studio Live Share extension, when a guest connected to a Live Share session was redirected to an arbitrary URL specified by the session host. An attacker would have been able to successfully exploit this vulnerability and cause the guest's computer to open a browser and navigate to a malicious URL without explicit consent. This was part of the "Shared Server" feature of Live Share that allowed auto-port forwarding during an active Live Share session. The latest update addresses this vulnerability by prompting the Live Share guest for consent prior to browsing the host-specified URL.
released December 3, 2019
Summary of What's New in Visual Studio 2019 version 16.4
- Visual Studio now supports “FIPS compliance mode”
- XAML Designer zoom/position now defaults to Fit All.
- Create Data Binding Dialog has been added.
- Improvements to regions IntelliSense
- Snippets in XAML IntelliSense
- Pop-up XAML editor as a separate window from designer
- Displaying resources for referenced assemblies
- Just My XAML in Live Visual Tree
- Merge Resource Dictionary
- XAML Islands support
- Edit Template now works with controsl from 3rd party controls.
- Clang-Tidy support in C++ MSBuild and CMake projects, for both Clang and MSVC.
- AddressSanitizer support for projects compiled with MSVC on Windows.
- Support for publishing local Git repositories to GitHub.
- Change your document tabs to a vertical layout with Vertical Document Tabs.
- .NET Productivity additions in this release include the ability to configure the severity level of a code style rule directly in the error list, Find All References now has the option to group by type and member, and a refactoring to make a local function static and pass in variables defined outside of the function to the function's declaration and calls.
- Quickly customize how objects are displayed in debugger windows using the new Pinnable Properties feature.
- Containers tool window adds the ability to inspect, stop, start, and remove Docker containers and images
- Option to improve startup peformance by auto hiding tool windows
- Automatic detection of SQL Server and Azure Storage connections strings when managing publish dependencies or using Connected Services
- Added support for developing Azure Functions using the 64bit runtime.
- Added support for .NET Core 3.0 app publishing options: Ready to Run (Crossgen), Linking, and SingleExe
- .NET Productivity additions in this release include the ability to configure the severity level of a code style rule directly through the editor, navigate easily up the inheritance chain with the new Go To Base command, adding null checks for all parameters, and XML documentation for overriding methods.
- XAML Hot Reload for Xamarin.Forms
- Android App Bundle Publishing
- AndroidX Migration Wizard
- Android Layout Linting
Details of What's new in Visual Studio 2019 version 16.4
Visual Studio now supports “FIPS compliance mode”
Starting with version 16.4, Visual Studio 2019 now supports “FIPS 140-2 compliance mode” when developing apps and solutions for Windows, Azure, and .NET. When you’re developing apps or solutions for non-Microsoft platforms like Linux, iOS, or Android, these platforms may not use FIPS 140-2 approved algorithms. Third-party software included with Visual Studio or extensions that you install also may not use FIPS 140-2 approved algorithms. In addition, development for SharePoint solutions does not support FIPS 140-2 compliance mode.
To configure FIPS 140-2 compliance mode for Visual Studio, install .NET Framework 4.8 and enable the Windows group policy setting: “System cryptography: Use FIPS compliant algorithms for encryption, hashing, and signing.”
Customers building WPF/UWP applications will see the following improvements in Visual Studio XAML tooling:
- XAML Designer zoom/position now defaults to Fit All: Based on customer feedback we’ve reevaluated the default XAML Designer zoom behavior that occurs when you open a XAML window/page/control/etc. The previous experienced stored the zoom level and position for each file across Visual Studio sessions which caused confusion when customers were coming back to a file after some time had passed. Starting with this release we will only store the zoom level and position for the duration of the active session and go back to a “fit all” default once Visual Studio is restarted.
- Create Data Binding Dialog: Visual Studio has had a data binding dialog available to WPF .NET Framework developers from the right-click of the XAML Designer and Property Explorer, and this dialog was also previously available to UWP developers. In this release we’re bringing back this experience to UWP developers and adding support for WPF .NET Core applications. This feature is still in development and will continue to improve in the future to bring back feature parity with .NET Framework dialog capabilities.
- Improvements to #regions IntelliSense: Starting with Visual Studio 2015 #region support has been available for WPF and UWP XAML developers and more recently for Xamarin.Forms. In this release we’ve fixed an IntelliSense bug, with this fix #regions will now show properly as you begin to type <!.
- Snippets in XAML IntelliSense: IntelliSense has been enhanced to support showing XAML snippets, this will work for both built-in snippets and any custom snippets that you add manually. Starting with this release we’re also including some out-of-the-box XAML snippets: #region, Column definition, Row definition, Setter and Tag.
- Pop up XAML editor as a separate window from designer: It is now possible to easily split the XAML Designer and its underlying XAML editor into separate windows using the new Pop up XAML button next to the XAML tab. When clicked the XAML designer will minimize its attached XAML tab and pop open a new window for just the XAML editor view. You can move this new window to any display or tab group in Visual Studio. Note that it is still possible to expand the original XAML view but regardless all XAML views of the same file will stay synchronized in real-time.
- Displaying resources for referenced assemblies: XAML IntelliSense has been updated to support displaying XAML resources from a referenced assembly (when source is not available) for WPF Framework and WPF .NET Core projects.
XAML Debugging Tools
- Just My XAML in Live Visual Tree: The Live Visual Tree is a feature that is available to both UWP and WPF developers when they run their application in debug mode and is part of the live editing tooling related to XAML Hot Reload. Previously the feature would display the full live visual tree of the attached running application with no filter possible to see just the XAML you’ve written in your app. This made for a very noisy experience and based on customer feedback we’ve added a new default called “Just My XAML” which will limit the tree to just controls you wrote in your application. While this is the new default it is still possible to go back to the previous behavior through either the button within tine Live Visual Tree itself or through a new setting (found under: Options > Debugging > General > Enable Just My XAML)
Resources & Templates
- Merge Resource Dictionary: It is now possible to easily merge an existing resource dictionary within your UWP/WPF project with any valid XAML file using the new feature available through the solution explorer. Simply open the XAML file in which you want to add the merge statement, then find the file you wish to merge in and right-click on it in solution explorer. In the context menu select the option “Merge Resource Dictionary Into Active Window”, which will add the right merge XAML with path.
- Edit Template now works with controls from 3rd party controls: It is now possible to create a copy of a controls template even when it’s not part of your solution as source code. With this change the “Edit Template” feature will now be available and work as it does for 1st party elements where the source is available today. Note that this feature is applicable to both 3rd party control libraries and 1st party where source isn’t available.
- Improved XAML Island support: We’ve added support for XAML Islands scenario for Windows Forms and WPF .NET Core 3 apps making it easier to add UWP XAML control into these applications. With these improvements a .NET Core 3 project can a reference to UWP project that contains custom UWP XAML controls. Those custom controls can be used by the WindowsXamlHost controls shipped within the Windows Community Toolkit v6 (Microsoft.Toolkit.Wpf.UI.XamlHost v6.0). You can also use the Windows Application Packaging project to generates MSIX for you .NET Core 3 with Islands. To learn how to get started visit our documentation.
- Code Analysis now natively supports Clang-Tidy for both MSBuild and CMake projects, whether you're using a Clang or MSVC toolset. clang-tidy checks can run as part of background code analysis, appear as in-editor warnings (squiggles), and display in the Error List.
- Visual Studio CMake projects now have Overview Pages to help you get started with cross-platform development. These pages are dynamic and help you connect to a Linux system and add a Linux or WSL configuration to your CMake project.
- The launch drop-down menu for CMake projects now displays your most recently used targets and can be filtered.
- C++/CLI now supports interop with .NET Core 3.1 and higher on Windows.
- You can now enable ASan for projects compiled with MSVC on Windows for runtime instrumentation of C++ code that helps with detection of memory errors.
- Updates to MSVC's C++ Standard Library:
- C++17: Implemented
to_chars()general precision, completing P0067R5 Elementary String Conversions (charconv). This completes implementation of all library features in the C++17 Standard.
- C++20: Implemented P1754R1 Rename concepts to standard_case. To include preview features from the Latest C++ Working Draft, use the compiler flag
/std:c++latest; the flag can also be set in the C/C++ > Language project property page via the C++ Language Standard property.
- C++17: Implemented
- A new collection of tools named C++ Build Insights is now available. See the C++ Team Blog for more information.
Publish to GitHub Support
- The publish to GitHub feature that was a part of the GitHub Extension for Visual Studio is now included in Visual Studio’s GitHub Essentials.
- You can now publish local Git repositories to GitHub using the Publish to GitHub button on Team Explorer Synchronization page.
Vertical Document Tabs in Visual Studio
Manage your document tabs in a vertical list on either the left or right side of your editor.
Pinnable Properties Debugging Tool
You can now quickly identify and inspect objects at debug-time by pinning properties to the top of DataTips or the Watch, Autos, and Locals windows using the Pinnable Properties feature.
Containers tool window
- You can list, inspect, stop, start, and remove containers
- You can view logs and file contents for running containers, as well as open a terminal window into the containers
- You can view, inspect, and remove images
Autohide tool windows
Enabling this preview feature option allows you to skip startup delays introduced by launching Visual Studio with multiple tool windows opened.
- You can now configure the severity level of a code style rule directly through the error list. Place your cursor on the error, warning, or suggestion. Right click and select Set severity. Then select the severity level you would like to configure for that rule. This will update your existing EditorConfig with the rule’s new severity. This also works for third party analyzers.
- Find All References now allows you to group by type and member.
- You can now make a local function static and pass in variables defined outside the function to the function’s declaration and calls. Place your cursor on the local function name. Press (Ctrl+.) to trigger the Quick Actions and Refactorings menu. Select Make local function
- You can now pass a variable explicitly into a local static function. Place your cursor on the variable in the static local function. Press (Ctrl+.) to trigger the Quick Actions and Refactorings menu. Select Pass variable explicitly in local static function.
- You can now configure the severity level of a code style rule directly through the editor. If a user does not currently have an .editorconfig file, one will be generated for them. Place your cursor on the error, warning, or suggestion and type (Ctrl+.) to open the Quick Actions and Refactorings menu. Select ‘Configure or Suppress issues’. Then select the rule and choose the severity level you would like to configure for that rule. This will update your existing EditorConfig with the rule’s new severity. This also works for third party analyzers.
- You can now use the Go To Base command to navigate up the inheritance chain. Go To Base command is available on the context (right-click) menu of the element you want to navigate the inheritance hierarchy. Or you can type (Alt+Home). If there is more than one result a tool window will open with all of the results that you can choose to navigate to.
- You can now add null checks for all parameters. This will add if statements that check nullity of all the nullable, non-checked parameters. Place your cursor on any parameter within the method. Press (Ctrl+.) to trigger the Quick Actions and Refactorings menu. Select the option to ‘Add null checks for all parameters’.
- Methods that have no XML documentation can now automatically inherit XML documentation from the method it is overriding. Place your cursor over the undocumented method that implements a documented interface method. Quick Info will then display the XML documentation from the interface method.
XAML Hot Reload for Xamarin.Forms
XAML Hot Reload for Xamarin.Forms speeds up your development and makes it easier to build, experiment, and iterate on your user interface. You no longer have to rebuild your app each time you tweak your UI – it instantly shows you your changes in your running app.
Android App Bundle Publishing
You can now create Android App Bundles when publishing your Android applications in Visual Studio. App Bundles provide users with with optimized APKs per their device specifications when downloading an app from the Google Play Store or various Android App Stores.
AndroidX Migration Wizard
You can now use an AndroidX migration wizard to convert your existing Android application to AndroidX from the Android Support Library.
Android Layout Linting
You are now provided a set of common issues when editing your layouts inside the Android designer.
Top Issues Fixed in Visual Studio 2019 version 16.4
- Incorrect code generation with Visual Studio 2019 16.3.0
- Could not connect to Mac-Server using Address XXX and User ... Buildprocess cannot continue without connection.
- MSVC 14.23.28019 compilation bug
- System.MethodAccessException: Attempt by method
- Go to definition goes to wrong definition in CRTP scenarios
- VS2019 ComboBox的闪退问题-VS2019 ComboBox's exits problem
- Visual Studio Feedback sign in fails for "Failed to acquire file lock on ... AadConfiguration.lock"
- cmake project file could not be loaded
- ftp publish does not upload all folders
- Mandatory collection of VS System Logs
- Starting Visual Studio 2019 from command line to load CMake project doesn't work.
- VS feedback Tool CRASHED while trying to crop a non-existent screenshot
- Searching and submitting feedback doesn't work for me behind a proxy
- navigate to definition Find symbol results does not list correct symbol
- Visual Studio 2019 crashing consistently when clicking on number of references
- there was an error running the selected code generator "sequence contains no matching element"
- Printing a class diagram
- ADD SENSITIVITY CLASSIFICATION statement support for SSDT
- Feedback Tool does not apply Black High Contrast theme
- test explorer window fails to open
- Retain unit test status after repository update
- Explicit interface bug introduced in Mono 6.4
- Design-Build Error for Debug/Arm when "Setting up your project for Linux Development.
- In VSTO add-in, the VS not letting me create a new WPF class
- Last Visual Studio update broke NTLM authentication on Android (seems like new version of Momo would be a reason)
- Without any changes to source files, "Edits were made which cannot be compile.."
- Show Output window when build starts" not working correctly
- Ability to set runsettings in project file
- C++ highlighter partially stops working after "An exception of type NullReferenceException"
- Pressing semi-colon closes intellisense instead of actually typing it.
- Automatic ANSI .rc file conversion to UTF8 !!! (not wanted !!!)
- Azure Functions projects never hit breakpoints when the "Automatically close the console when debugging stops" option is enabled
- Add area from a Razor Pages project throws "There are no scaffolders supported for this item."
- vs2017rc edit and continue not working
- Non-WPF auto-hidden tool windows can sometimes throw an initialization error
- Null Reference exception thrown by debugger
- Problem using clang-tidy on project using precompiled headers
- Cannot create iOS Archive - Process cannot be executed on XMA server (the path or filename are too long)
- Visual Studio freezes when using git blame
- "Analyse Code Coverage" missing from the test menu
- C++ Intellisense on VS2019 reports incorect errors that Intellisense on VS2017 does not
- explicit operator bool can be invoked implicitly by comparison operators
- CodeLens isn't working
- Very fragile ICE
- Fatal error C1001: when using constexpr template function in the MFC macro ON_COMMAND_RANGE() with a DEBUG build
- Sync with active document while solution explorer is closed selects all files
- Alignas of Structured Bindings (C++17) not working
- VS2019 C++ failed to specialize SFINAE (regression)
- C++ CLI Intellisense incorrectly warns that property has no 'set' accessor
- Xamarin fastlane: "There was an error while syncing the developer information: 'Limit of requests to iTunes Connect is reached.'"
- Intellisense tooltip cut off
- C++ control keywords not showing up in IntelliSense Member List suggestions
- XAML UI debugging tools - incorrect work the Button "Enable selection"
- Function paremeters list is not fully displayed in a popup when calling the function with many parameters.
- Wrong code formatting with ampersand operator v2
- Incorrect detection of support for nodiscard with reason
- Intellisense does not see vcpkg include directories for WSL configuration for CMake project
- error LNK2005: "__cdecl Windows::Foundation::operator co_await(struct Windows::Foundation::IAsyncAction ^)" (?? __LFoundation@Windows@@YA@PE$AAUIAsyncAction@01@@Z) already defined in pch.obj
- VS2019 #pragme message 显示异常-VS2019 #pragme message shows an exception
- Identifier Tag
- VCManagedPackage package did not load correctly when joining LiveShare session
- VS2019 16.2.1 #pragme message shows an exception
- VS2019 Win10 1703 Modeling SDK DiagramClientView blank on reload
- C++/CLR + .Net Core crashes Visual Studio
- C++: wrong code generation for structure copy operation
- Disabling Diagnostic tools resource limits is not persistent
- Test Explorer/CMake is searching for tests before running tests
- VS2019 Preview xaml snippets row and col work badly with IntelliSense
See all issues and available workarounds in Visual Studio 2019 version 16.4 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.