What's New in Visual Studio 2019
Visual Studio 2019 Preview Releases
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 Preview 1
released December 04, 2018
Summary of What's New in Visual Studio 2019 Preview 1
IDE
- Collaborate with others using Visual Studio Live Share, which is installed by default. Additional language support for C++, VB.NET, and Razor gives guests a solution view and sharing of source control diffs.
- Open code you recently worked on or start from one of the most commonly used flows like clone, open, or new project through the new start window.
- Create new projects with an improved search experience and filters using the new list of templates sorted by popularity.
- Have more vertical room for your code and a modernized look and feel through a set of new visual changes in the shell.
- View a sharper version of your IDE regardless of your display configuration and/or scaling, as we have improved support for per monitor awareness.
- Use an improved search capability in Visual Studio for menus, commands, options, and installable components.
- Quickly understand your code file's 'health' with a document indicator. Run and configure through a one-click code cleanup from the indicator.
- Easily manage the preview features you are opted in to with a new Preview Features page in the Options dialog.
- MSBuild and Visual Studio now target .NET Framework 4.7.2 by default.
General Debugging
Source Control and Team Explorer
- Temporarily store changes so you can work on another task by using Team explorer's Git tools support for Git stash.
- Check out the optional extension available on the Visual Studio Market Place, Pull Requests for Visual Studio, that integrates Pull Request reviews into Visual Studio.
- Use the new Azure DevOps work item experience that focuses on developer workflows, including user-specific work item views, creating a branch from a work item, searching for work items with #mentions, and inline editing.
Programming Languages
- Save time when writing C++ and XAML code by using Visual Studio IntelliCode, an optional extension that gives AI-assisted recommendations for your code.
- Learn about the F# language and tools open source contributions that have been incorporated. These changes have stabilized the existing F# feature set.
- Easily add Python virtual and conda environments using the Python Add Environment dialog.
Web Technologies
- Take advantage of the added support for working with .NET Core 3.0 projects.
- Check out CPU profiling of ASP.NET.
- Use snapshot debugger for .NET web apps running on Virtual Machines, Virtual Machine Scale Sets, and Azure Kubernetes Service.
Mobile Development with Xamarin
- Use the IntelliCode extension with XAML with the help of our added support.
Top Issues Fixed in Visual Studio 2019 Preview 1
If you are looking for a specific customer-reported issue that has been fixed in Visual Studio 2019 version 16.0 Preview 1, visit Developer Community.
Details of What's New in Visual Studio 2019 Preview 1
Start window
The new start window provides a streamlined launch experience to help you quickly get to your code upon starting up Visual Studio.
- View your recent projects and folders, and open them with a single click. You can also pin and remove items from the list from the context menu.
- Clone or checkout code by using any publicly available git URL, which will also automatically open the folder in the IDE.
- Browse your local disk or network share for projects, solutions, or any folders containing code, and open them in the IDE.
- Create a new project or solution that provides you with code scaffolding to help you get started.
- Find templates by searching through a list of most popular templates for the workloads you've downloaded or filter through available languages, platforms, and project types. A two-page wizard allows you to concentrate on one decision at a time.
New Start Window Experience
Shell and platform
- Quickly spot which version of Visual Studio you're opening and using via the new, improved product icon. The new icon is also more visible against a variety of backgrounds.
- Experience a modernized look and feel of Visual Studio with our refreshed blue theme that gives you a cleaner user interface while still meeting our accessibility standards.
- See more of your code, through our changes that target compactness and reclaim vertical space in the IDE. We have combined the title bar and the menu bar while also preserving existing functionality.
- Use Visual Studio as a Per-Monitor Awareness application through a new, experimental setting. When on, this setting helps parts of Visual Studio, such as the shell and the editor, render more sharply regardless of your display configuration and/or scaling.
- Experience an enhanced search experience across menus, commands, options, and installable components. Our new search now displays results dynamically, accommodates spelling errors, and provides relevant information (such as keyboard shortcuts) inside the search results.
Enhanced Search in Visual Studio
- View health information associated with your currently open file through the Document Health Indicator feature.
- The Document Health Indicator will provide you with information such as:
- A summary of errors, warnings, and suggestions on hover.
- Navigation to the next or previous issue in the file on Click or Shift + Click, respectively.
- The ability to configure or run Code Cleanup from the right-click menu.
Document Health Indicator
- If you are a C# developer, you can quickly clean up some of the most common coding suggestions using Code Cleanup.
- Run or Configure Code Cleanup by right-clicking the Document Health Indicator in the bottom-right corner of the editor.
Document Health Indicator Menu
- Select the set of fixers you'd like to have run by configuring Code Cleanup.
Configure Code Cleanup
- See the contents of your clipboard history via a context menu that extends the Clipboard Ring (Ctrl + Shift + V).
Clipboard Ring Context Menu
- The recommended way to implement data tooltips in Visual Studio 2019 and later is now IAsyncQuickInfoSourceProvider. Legacy Editor Quick Info APIs IVsTextTipData and TextTipData are deprecated in Visual Studio 2019 Preview 1.
- The Editor Smart Tags (ISmartTag* family of interfaces in Microsoft.VisualStudio.Language.Intellisense namespace) have been deprecated in favor of the LightBulb API and are no longer supported starting with Visual Studio 2019 Preview 1.
- The solution options Show advanced build configurations, Always show solution, and Save new projects when created have been removed due to low usage. These values have been set to their default value of True.
- Opt in or out of certain preview features using the new Preview Features page found in Tools > Options > Environment > Preview Features.
Extensibility
- You will no longer be able to install extensions built with the V1 vsixmanifest extension format in Visual Studio 2019. V1 was introduced in Visual Studio 2010 and was deprecated in Visual Studio 2017 because it could cause reliability issues with Visual Studio. In Visual Studio 2019, the support for V1 has been completely removed. Extensions targeting Visual Studio 2019 should be rebuilt V2 or V3 of the vsixmanifest format.
- You will now be notified when an extension is synchronously auto-loaded. Note, the extension will load and work as normal in this release, but is at risk of not functioning in the next Visual Studio 2019 update. More details can be found on our blog post about improving the responsiveness of critical scenarios by updating auto load behavior for extensions.
Performance
- You can now see your solution load progress in the Task Status Center, as well as alerts when your solution loads finish.
- Choose which projects to load on solution open with Solution Filter Files.
- Create a Solution Filter File by unloading projects you don't want opened automatically, right-clicking the solution, and selecting Save As Solution Filter. You can then use the filter file to open the solution for subsequent uses.
- Experience improved build asset discovery and file search when you Ctrl+T in Open Folder scenarios.
- Notice performance improvements now that the Visual Studio editor will limit the impact of auxiliary components on typing performance. Particularly, it will auto-cancel any long-running, nonessential operations when typing.
- You can configure the Visual Studio auxiliary component limitation behavior via Tools > Options > Text Editor > Advanced:
Visual Studio Typing Latency Options
- You can now disable the restoration of the project hierarchy state from the previous session in the Solution Explorer tool window. We implemented this change because restoring the project hierarchy from previous session at solution open can delay solution load.
- Toggle this option in Tools > Options > Projects and Solutions > General.
- You can now disable the restoration of the tool window's state from the previous session and instead always load Solution Explorer and Team Explorer at startup. This change was implemented because restoring tool windows from previous sessions can delay solution loads at startup.
- Toggle this option in Tools > Options > Environment > Startup.
General Debugging
- Highlight, find, and navigate with keywords using our new search feature that we integrated into the Watch, Autos, and Locals windows.
Searching in the Watch Window
- View a dropdown of specifiers and options to format data in the Watch, Autos, and Locals windows by appending a comma to a listed item.
Format Specifier Dropdown in Watch Window
- You can now use custom and DataSet visualizer support for .NET Core.
- For C++ applications running on Windows, PDB now load in a separate 64-bit process. This change addresses a range of crashes caused by the debugger running out of memory when debugging applications that contain a large number of modules and PDBs.
Source Control
- Temporarily store changes so you can work on another task now that Team Explorer's Git tools support Git stash.
- Review, run, and even debug pull requests from Azure Repos without leaving the IDE using our brand-new pull request experience in Visual Studio 2019. To get started, you can download the Pull Requests for Visual Studio extension from the Visual Studio Marketplace.
New Pull Request Experience
MSBuild
- The MSBuild toolset version has been changed from
15.0
to Current
. MSBuild.exe
is now in %VSINSTALLDIR%\MSBuild\Current\Bin\MSBuild.exe
.
- MSBuild (and Visual Studio) now targets .NET Framework 4.7.2. If you wish to use new MSBuild API features, your assembly must also upgrade, but existing code will continue to work.
C++
- Collaborate in real time now that Visual Studio Live Share supports C++.
- Save time by by using IntelliCode, an optional extension that uses its extensive training and your code context to put what you're most likely to use at the top of your completion list. For C++, IntelliCode offers the most help when you are using popular libraries like STL.
- We have modified several project template names and descriptions to fit with the updated New Project dialog.
- We have removed the Clang/C2 experimental component. Use the MSVC toolset for full C++ standards conformance with /permissive- and/or /std:c++17, or the Clang/LLVM toolchain for Windows. See the Visual C++ Team Blog for more details.
- We have deprecated the C++ Compiler /Gm switch. Consider disabling the /Gm switch in your build scripts if it's explicitly defined. Alternatively, you can also safely ignore the deprecation warning for /Gm as it will not be treated as error when using "Treat warnings as errors" (/WX).
- The C++ Android experience now defaults to Android SDK 25 and Android NDK 16b.
F# and F# tools
For F#, we focused on incorporating open source contributions and stabilizing the existing F# feature set with Visual Studio 2019 features and infrastructure.
- We improved memory usage when using Type Providers to generate very large amounts of provided types in a completion list (#5599).
- We optimized methods on structs and struct records to perform as well as methods on classes and class-based records (#3057).
- We optimized the emitted IL for combined boolean logic in F# code (#635).
- When a user-defined attribute does not inherit from the
Attribute
class, you will now receive a warning.
- The
AssemblyInformationVersionAttribute
value in a project file now supports arbitrary values to support scenarios such as SourceLink (#4822).
- A bug where illegal syntax with Active Patterns would cause an internal compiler error has been fixed by Steffen Forkmann (#5745).
- A bug where the
Module
suffix was erroneously added to a module in a recursive module to match a type where the only difference is a generic parameter was fixed by BooksBaum (#5794).
- An improvement to the error message when type parameters are not adjacent to a type name has been improved by Alan Ball (#4183).
- Various performance improvements have been added by Steffen Forkmann and Robert Jeppesen.
- The
uint16
literal suffix is listed correctly in the error messages for invalid numeric literals, by Teo Tsirpanis (#5712).
- Error messages for computation expressions no longer state
async
in the message and instead refer to "computation expression(s)", by John Wostenberg (#5343).
- An error message when incorrectly referencing
.dll
s in F# interactive was fixed by Bartoz Sypytkowski (#5416).
- With "Smart" indentation on, pasting F# code into the editor will now format it to match an appropriate scope based on the current cursor position, implemented by Saul Rennison (#4702).
- The Add
open
statement code fix will now default to adding the open
statement at the top of the file.
- We changed IntelliSense so that it will no longer show symbols from unopened namespaces.
- We fixed a bug where
match!
in user code invalidated structure guidelines and code outlining nodes for subsequent scopes (#5456).
- The editor will now correctly color
byref
, outref
, and ref
values as record fields with the mutable value colorization (#5579).
- We fixed a bug where the rename refactoring did not recognize the
'
character in symbol names (#5604).
Python
Based on customer feedback, Visual Studio 2019 includes an overhauled experience for managing Python environments:
- We added a new Add environment dialog that simplifies the experience of creating and adding virtual environments and conda environments in your project.
- The Visual Studio installer no longer installs full versions of Anaconda to reduce the size of Visual Studio installs and avoid errors during upgrades.
- Instead, we recommend you install Anaconda or miniconda manually and add Adaconda environments to your project using the Add environment dialog.
- You will now be automatically prompted to add an environment if a requirements.txt (virtual environment) or environment.yml (conda environment) is present at the root of your project.
JavaScript/TypeScript
The legacy JavaScript language service is no longer available. Previously, users had the option of restoring the legacy JavaScript language service. Users will now have the new JavaScript language service out-of-the-box. The new language service is based on the TypeScript language service, which is powered by static analysis. This enables better tooling, so your JavaScript code can benefit from richer IntelliSense based on type definitions. The new service is lightweight and consumes less memory than the legacy service, providing users with better performance as their code scales.
- Create ASP.NET, Console, and Class Library projects targeting .NET Core 3.0 (Windows Forms or WPF projects for .NET Core 3.0 will need to be created using the "dotnet new" command).
- Build and debug projects targeting .NET Core 3.0 by downloading and installing the .NET Core 3.0 SDK.
- Use code metrics with .NET Core projects with our added compatibility.
- Export editor settings to an Editorconfig file through Tools > Options > Text Editor > C# > Code Style with the button "Generate .editorconfig file from settings".
- Use C# and Visual Basic's new Regex parser support. Regular expressions are now recognized, and language features are enabled on them. Regex strings are either recognized when a string is passed to the Regex constructor or when a string is immediately preceded with a comment containing the string
language=regex
. The language features included in this release are classification, brace matching, highlight references, and diagnostics.
Regular Expression Parser Support
- You can now use dead code analysis for unused private members with an optional code fix to remove unused member declaration.
- The Find References feature on an accessor now only returns results for that accessor.
- We have added a code fix for generating a deconstruct method.
- "Using" statements can be added when code is pasted into a file. A code fix appears after pasting recognized code that prompts you to add relevant missing imports.
- There are now more refactorings and quick actions available by using "Ctrl + ." or "Alt + Enter":
- For cases where "await" is implied but omitted, there is now a compiler warning.
- For converting a local function to a method.
- For converting a tuple to a named-struct.
- For converting an anonymous type to a class.
- For converting an anonymous type to a tuple.
- For a foreach loop to LINQ query or to LINQ method.
- You now have added support for ASP .NET Core applications running in an Azure Kubernetes Service. To get started, see this docker example over on GitHub.
- ASP.NET is now supported in the CPU Usage tool of the Performance Profiler.
CPU Usage Tool in Performance Profiler
- You can now use Find All References (Shift-F12) and CodeLens to show results from Razor (.cshtml) files in the solution. You can then navigate to the identified code in the relevant Razor files.
- We've added support for targeting ASP .NET (core and desktop) applications running on Windows Virtual Machines (VM) and VM Scale Sets.
Snapshot Debugger Target Selection UI
- You will now receive a warning when running code analysis using FxCop. .NET Compiler analyzers are the recommended way to perform code analysis going forward. Read more on migrating to .NET compiler platform analyzers.
- Portable Class Library (PCL) project templates are no longer available, and project support will not be installed by default. New projects intended to target multiple platforms should use the .NET Standard project type. Customers who require PCL project support must install the component separately from the Individual Components tab in the Visual Studio installer.
- The "Project.CopyWebSite" command is no longer available. This feature was only available on the "Web Site" project type for .NET. It provided the ability to synchronize two web sites so that they have the same version of each file. In Visual Studio 2019, you can copy the files from the remote destination outside of Visual Studio and then open the project.
- The ability to open a Web Site project from a remote FTP location has been removed. FTP users can copy the files from the remote destination outside of Visual Studio, open the project and make changes, and then use publish to push them back to the remote FTP location.
- The ASP.NET and Web workload no longer installs a custom CoffeeScript editing experience. Visual Studio's TextMate bundles provide a superior experience for working with CoffeeScript.
- CSS and CoffeeScript errors that are currently generated by built-in copies of CSSLint and CoffeeLint will no longer automatically surface when editing those files. Use an alternative method for running linters such as npm or the Visual Studio Task Runner Explorer.
- Visual Studio no longer provides IntelliSense for Knockout HTML attributes. In Visual Studio 2019 you will need to type the attributes.
- The ability to use the Legacy Chrome debugger in ASP.NET projects for debugging JavaScript has been removed. You can continue to use the current Chrome debugger built into Visual Studio.
In Visual Studio 2019, the profiling experiences that were available in the Performance Wizard have been moved to the Performance Profiler. You can find the CPU Usage Tool for sampling, and instrumentation in the Instrumentation tool in the Performance Profiler. With this change the Performance Wizard is no longer needed and has been removed from Visual Studio 2019. Additionally the sampling option in the VS Performance command line tools have been removed, a replacement command line tool will be released in an upcoming preview.
- OSS UI test tools such as Selenium and Appium have gained momentum and have a strong community backing. Because these frameworks have become industry standards, we deprecated Coded UI test for automated UI-driven functional testing. Visual Studio 2019 will be the final version of Visual Studio with Coded UI test features. We recommend using Selenium for testing web-applications and Appium with WinAppDriver for testing desktop and UWP apps.
- Visual Studio 2019 will be the last version of Visual Studio with load test features. For customers requiring load testing tools, we recommend using alternate load testing tools such as Apache JMeter, Akamai CloudTest, Blazemeter.
- In Visual Studio 2019, some test window APIs that were previously marked public but were never officially documented have been removed. They were marked deprecated in Visual Studio 2017 to give extension maintainers an early warning. To our knowledge, very few extensions have taken a dependency on these APIs. These APIs include IGroupByProvider, IGroupByProvider, KeyComparer, ISearchFilter, ISearchFilterToken, ISearchToken and SearchFilterTokenType. If this change affects your extension, please let us know by submitting an issue on Developer Community.
Mobile Development with Xamarin
This release includes improvements to workload size and Android build performance and reliability, as well as enhancements for Xamarin.Android and Xamarin.Forms productivity.
- The Xamarin workload is now just 7.69GB, a 2x reduction from Visual Studio 2017 version 15.9 and a 3x improvement over version 15.7.
- The IntelliCode extension now supports Xamarin.Forms XAML.
Android Build Performance and Reliability
In Visual Studio 2017 version 15.9 and Visual Studio for Mac 7.7, we made initial build performance and build correctness improvements. In Visual Studio 2019 and Visual Studio for Mac 7.8, we made building and deploying even faster.
Android Build Now Faster than Grabbing a Cup of Coffee
- You will now make use of Android's next generation packaging tooling. To enable this feature, add an MSBuild flag in your project's
.csproj
:
- aapt2 divides Android packaging into two steps: Compile and Link. This improves performance for incremental builds and provides earlier error reporting. For example, if there are changes in a single file, you only need to recompile that file.
<AndroidUseAapt2>True</AndroidUseAapt2>
- By enabling this tool in your projects, you enable enhanced performance at both build time and runtime. For more details on these properties, see our documentation on the Build Process in Xamarin.Android.
Xamarin Android Designer Enhancements
We have made a number of productivity enhancements to the interactions in Split View.
- Drag and drop directly from the toolbox to the source editor to help quickly scaffold your Android layouts.
- Select elements directly from their XML definition span in the source editor. We implemented this by synchronizing the caret position with the corresponding Android view, allowing you to quickly access an element's properties in the property panel right from the editor.
- Use an inline color preview to your XML code so you can see what colors are being used in your controls.
- Use our quick info feature by hovering over a value to find out more about it, such as where it's defined or what the hexadecimal value for the color is.
Quick Info in Action
Xamarin.Forms Property Panel
You can now edit the most common attributes of Xamarin.Forms controls, cells, and layouts in a property panel and see those changes reflected immediately in your XAML.
Xamarin.Forms Property Panel
Android Emulator Improvements
In Visual Studio 2019, Android emulator images are easier to create. We've also continued to work with the Windows team in the Windows 10 October 2018 Update, version 1809, to improve the performance of the Android emulator when running on Hyper-V.
- New users can create their first image by simply pressing the run icon.
- Our emulator acquisition experience automatically determines the best configuration for your setup and takes advantage of hardware acceleration (with Intel HAXM or Hyper-V) and quick boot by default.
- When you want to create another image, you can select Create Android Emulator from the dropdown to open the Android Device Manager.
Universal Windows Platform
- The IntelliCode extension now supports XAML.
- To reduce Visual Studio setup complexity and size, Windows Phone emulators have been removed from Visual Studio installation. You will now need to download the emulators manually.
- XAML design time tooling for UWP apps targeting Windows 10 SDKs before the Windows 10 Fall Creators Update (build 16299) has been removed. Retarget your applications to Windows 10 version 1709 or higher to use the XAML Designer, or use the XAML editor.
- UWP test projects using
project.json
to define NuGet dependencies are no longer supported. You must upgrade your project to use the new PackageReference
format.
- UWP JavaScript apps are no longer supported in Visual Studio 2019. You cannot create or open JavaScript UWP projects (files with extension
jsproj
). You can learn more via our documentation on creating Progressive Web Apps (PWAs) that run well on Windows.
In Visual Studio 2019, we made a few changes to the Office, SharePoint, and VSTO templates.
- The SharePoint 2019 templates that were added in Visual Studio 2017 15.9 are also available in Visual Studio 2019.
- We have removed support for SharePoint Sequential Workflow or State Machine Workflows. While you will not be able to create or open these workflows in Visual Studio 2019, you can continue to edit them in previous releases of Visual Studio.
- Office 2010 templates will no longer be available. However, you can still open existing Office 2010 projects in Visual Studio 2019.
- The Office 2013 and 2016 templates have been renamed to reflect that they support Office 2013 and above.
Team Explorer and Azure DevOps
We are releasing a new, streamlined, developer-centric experience when connecting Team Explorer to an Azure DevOps project.
-
Focus on relevant work items by filtering and pivoting your view based on work items assigned to you, ones that you're following, ones where you're mentioned in the discussion, and ones based on your activity.
- Within each view, you can create a work item inline, perform simple inline edits, mark a work item as complete, and associate a work item to pending changes.
-
Create a local branch from a work item which will automatically relate the work item to the changes made to that local branch. This is the default experience. Should you want to switch to the legacy experience, you can by setting the Work Items experience in Visual Studio. Note that this new experience is only true for Git repos. The new experience for TFVC repos will available in a following update.
Azure DevOps Work Item Hub
-
Search for work items when doing a #mention in the pending changes commit message. For more details, see the View and add work items using the Work Items page.
Azure DevOps #mentions
-
Support for Microsoft Project has been removed from the Team Foundation Server Office Integration 2019 plug-in for Visual Studio 2019 due to a low adoption rate in Azure DevOps. You will now need to export your work items to Excel and manually paste them into Project.
-
Support for PowerPoint has been removed from the Team Foundation Server Office Integration 2019 plug-in for Visual Studio 2019. However, users can still create storyboards in PowerPoint and link them manually to work items in Azure DevOps.
Application Insights and HockeyApp
- The Application Insights Trends window has been removed in Visual Studio 2019 in favor of alternatives that are more feature-rich. Instead, you can use the Application Insights Search window in Visual Studio or the rich set of diagnostics tools in Application Insights in the Azure portal.
- The wizards for adding the HockeyApp SDK and creating new beta distributions have been removed. We instead recommend using Visual Studio App Center, the successor to HockeyApp. You can still use HockeyApp normally, except without these shortcuts in Visual Studio. If you would like to learn more about HockeyApp, check out our support page.