Visual Studio 2019 Port, migrate, and upgrade projects
Each new version of Visual Studio supports most types of projects, files, and other assets. You can work with them as you always have, provided that you don't depend on newer features.
If you're looking for information specific to our next release, see the Visual Studio 2022 version of this page.
We try to preserve backwards compatibility with previous versions, such as Visual Studio 2017, Visual Studio 2015, Visual Studio 2013, and Visual Studio 2012. However, support for some project types changes over time. A newer version of Visual Studio might not support certain projects at all, or it might require that you update a project so that it's no longer backwards-compatible.
Some project types require specific workloads. If you don't have the workload installed, Visual Studio reports an unknown or incompatible project type. In that case, check your installation options in the Visual Studio Installer and try again. For more information about project support in Visual Studio 2019, see the Platform Targeting and Compatibility page.
The following list describes support in Visual Studio 2019 for projects that were created in earlier versions.
If you don't see a project or file type listed here that should be, consult the Visual Studio 2017 version of this article. You can also use the Submit and view feedback for > This page button at the bottom of this page to provide details of your project. (If you use the anonymous "Was this page helpful?" control, we aren't able to respond to your feedback.)
|Type of Project
|.NET Core projects (xproj)
|Projects created with Visual Studio 2015 used preview tooling that included an xproj project file.
Visual Studio 2017: The xproj format isn't supported other than for migration to csproj format. When you open an xproj file, you're prompted to migrate the file to the SDK-style csproj format. (A backup of the xproj file is made.) SDK-style csproj projects aren't supported in Visual Studio 2015 and earlier.
Visual Studio 2019: In version 16.3 and later, you can't load or migrate xproj projects. For more information, see Migrating .NET Core projects to the csproj format.
|ASP.NET Core Web App and ASP.NET Core Web App with Application Insights enabled
|For each Visual Studio user, resource information is stored in the registry per user instance. This information is used when a user doesn't have a project opened and wants to search Azure Application Insights data. Visual Studio 2015 uses different registry location than Visual Studio 2017 and Visual Studio 2019 and doesn't conflict.
Once a user creates an ASP.NET Web Application, ASP.NET Core Web App, or ASP.NET Core Web Application, the resource is stored in the .suo file. The user can open the project in Visual Studio 2015, Visual Studio 2017, or Visual Studio 2019, and the resource information is used for each as long as Visual Studio supports projects and solutions being used across both versions. Users need to authenticate once on each product. For example, if a project is created with Visual Studio 2017 and opened in Visual Studio 2019, the user needs to authenticate on Visual Studio 2019.
|C#/Visual Basic Webform or Windows Form
|You can open the project in Visual Studio 2019, Visual Studio 2017, and Visual Studio 2015.
|Coded UI Test
|Coded UI test for automated UI-driven functional testing is deprecated in Visual Studio 2019.
Visual Studio 2019 will be the last release for Coded UI test. We recommend using Selenium for testing web apps and Appium with WinAppDriver for testing desktop and UWP apps.
|Database Unit Test Projects (csproj, .vbproj)
|Older Data Unit test projects are loaded in Visual Studio 2019 but use the GAC'd version of dependencies. To upgrade the unit test project to use the latest dependencies, right-click on the project in Solution Explorer and select Convert to SQL Server Unit Testing Project....
|Visual Studio 2019 can open projects created in Visual Studio 2013, Visual Studio 2015, and Visual Studio 2017. A key difference from older Visual Studio templates for new projects is that the FSharp.Core version is now always a NuGet package. F# is installed by default with any .NET Workload.
|Installer projects created in Visual Studio 2010 can be opened in later versions with the help of the Visual Studio Installer Projects extension. Also see the WiX Toolset Visual Studio 2017 Extension. InstallShield Limited Edition is no longer included with Visual Studio. Check with Revenera about availability for Visual Studio 2019.
|LightSwitch is no longer supported in Visual Studio 2022, Visual Studio 2019, or Visual Studio 2017. Projects created with Visual Studio 2012 and earlier opened in Visual Studio 2013 or Visual Studio 2015 are upgraded and can be opened only in Visual Studio 2013 or Visual Studio 2015 thereafter.
|Web performance and load test capabilities are deprecated in Visual Studio 2019 and later.
Visual Studio 2019 will be the last release for load test. Use alternative load testing tools such as Apache JMeter, Akamai CloudTest, Blazemeter.
|Microsoft Azure Tools for Visual Studio
|To open these types of projects, first install the Azure SDK for .NET, then open the project. If necessary, your project is updated.
|Microsoft Test Manager
|Microsoft Test Manager and Feedback Client are no longer shipping in Visual Studio, starting with Visual Studio 2019.
Leverage Azure Test Plans (part of Azure DevOps) for your manual and exploratory testing needs.
|Model-View-Controller framework (ASP.NET MVC)
|Support for MVC versions and Visual Studio:
Upgrading MVC versions:
|If you allow Visual Studio to update the project automatically, you can open it in Visual Studio 2015, Visual Studio 2013, or Visual Studio 2012.
The format of the modeling project hasn't changed since Visual Studio 2015 and the project can be opened and modified in these versions. However, there are differences in behavior in Visual Studio 2017 and Visual Studio 2019:
|MSI Setup (vdproj)
|See the InstallShield section of this page.
|Office 2007 VSTO
|Requires a one-way upgrade for Visual Studio 2019.
|Office 2010 VSTO
|If the project targets the .NET Framework 4, you can open it in Visual Studio 2010 SP1 and later. All other projects require a one-way upgrade.
|Portable Class Library (PCL)
|Portable Class Libraries (or PCLs) are now unsupported. Visual Studio 2019 will still open and build them, but it isn't possible to create new PCL projects. We recommend migrating code in a PCL project to a .NET Standard project.
PCL support will no longer be included by default, but will be available on the Visual Studio "Individual Components" tab.
|Support for Python Windows IoT Core apps was removed in Visual Studio 2019. Because there's no equivalent in Visual Studio 2019, there's no automatic migration path for such projects.
You can continue using Visual Studio 2017.
|R Tools for Visual Studio
|R Tools for Visual Studio was removed from the Data Science Workload in Visual Studio 2019.
You can continue using Visual Studio 2017 or alternatives like RStudio.
|Service Fabric (sfproj)
|Service Fabric Application projects can be opened in either Visual Studio 2015, Visual Studio 2017, and Visual Studio 2019, unless the Service Fabric Application project references an ASP.NET Core service project. Service Fabric projects from Visual Studio 2015 that are opened in Visual Studio 2017 or in Visual Studio 2019 are one-way migrated from the xproj format to csproj. See ".NET Core projects (xproj)" earlier in this table.
|When a SharePoint solution project is opened with Visual Studio 2019, it's upgraded to either SharePoint 2013 or SharePoint 2016. The ".NET Desktop Development" workload must be installed in Visual Studio 2019 for the upgrade.
For more information about how to upgrade SharePoint projects, see Upgrade and Update SharePoint.
|SharePoint Add-In projects created in Office Developer Tools Preview 2 can't be opened in Visual Studio 2019. To work around this limitation, update the
MinimumVisualStudioVersion to 12.0 and
MinimumOfficeToolsVersion to 12.2 in the csproj vbproj file.
|Silverlight projects not supported in Visual Studio 2019. To maintain Silverlight applications, continue to use Visual Studio 2015.
|SQL - Redgate
|Redgate's SQL Change Automation Core (previously called ReadyRoll Core), SQL Prompt Core, and SQL Search are no longer shipping in the Visual Studio installer.
You can continue using Visual Studio 2017 for these features. In Visual Studio 2019, you can upgrade to the paid SQL Change Automation and SQL Prompt products that are available in Redgate's SQL Toolbelt.
|SQL Server Reporting Services and SQL Server Analysis Services (SSRS, SSDT, SSAS, MSAS)
|Support for these project types is provided through two extensions in the Visual Studio Gallery: Microsoft Analysis Services Projects and Microsoft Reporting Services Projects. SSDT support is also included with the Data Storage and Processing workload in Visual Studio 2019. For more information, see the Download and install SQL Server Data Tools (SSDT) for Visual Studio page.
|SQL Server Integration Services (SSIS)
|Support for Visual Studio 2019 is available. For more information, see the Download and install SQL Server Data Tools (SSDT) for Visual Studio page, the SQL Server Integration Services (SSIS) team blog, and the SQL Server Integration Services Projects page on the Marketplace.
|Test Window Extension
|In Visual Studio 2019, some test window APIs that were previously marked public but were never officially documented have been removed. Widely visible APIs were marked deprecated in Visual Studio 2017 to give extension maintainers an early warning. To our knowledge, few extensions have taken a dependency on these APIs. For more info and updates, view the complete list of deprecated test-related APIs. If this affects your scenario, let us know via the Visual Studio Developer Community.
|You can use Visual Studio 2019 to work in projects that were created in earlier versions of Visual Studio back to Visual Studio 2010. When you first open the project, you have the option to upgrade to the latest compiler and toolset or to continue using the original ones. If you choose to keep using the original ones, Visual Studio 2019 doesn't modify the project file, and uses the toolset from the earlier Visual Studio installation to build your project. Keeping the original options means you can still open the project in the original version of Visual Studio if necessary. For more information, see Use native multi-targeting in Visual Studio to build old projects.
|Visual Studio Extensibility/VSIX
|Projects with MinimumVersion 14.0 or less are updated to declare MinimumVersion 15.0, which prevents the project from being opened in earlier versions of Visual Studio. To allow a project to open in earlier versions, set MinimumVersion to
$(VisualStudioVersion). See also How to: Migrate Extensibility Projects to Visual Studio 2017.
|Visual Studio Lab Management
|You can use Microsoft Test Manager or Visual Studio 2010 SP1 and later to open environments created in any of these versions. However, for Visual Studio 2010 SP1 the version of Microsoft Test Manager must match the version of Team Foundation Server before you can create environments. (Important: Team Foundation Server, or TFS, is now known as Azure DevOps Server.)
|Visual Studio Tools for Apache Cordova
|Support for Apache Cordova was removed in Visual Studio 2019. Because there's no equivalent in Visual Studio 2019, there's no automatic migration path for such projects.
You can use the Cordova Tools for Visual Studio Code extension (which provides support for the latest version of Cordova) or continue using Visual Studio 2017.
|Web Deployment (wdproj)
|Support for Web Deployment projects was removed in Visual Studio 2012 with the addition of publish profile support. Because there's no equivalent in Visual Studio 2019, there's no automatic migration path for such projects. Instead, open the wdproj file in a text editor and copy-paste any customizations into to the pubxml (publish profile) file, as described on StackOverflow.
|Windows Communication Foundation, Windows Workflow Foundation
|You can open this project in Visual Studio 2019, Visual Studio 2017, Visual Studio 2015, Visual Studio 2013, and Visual Studio 2012.
|Windows Presentation Foundation
|You can open this project in Visual Studio 2019, Visual Studio 2017, Visual Studio 2013, Visual Studio 2012, and Visual Studio 2010 SP1.
|Windows Phone apps
|Projects for Windows Phone aren't supported in Visual Studio 2019.
To maintain Windows Phone 8.x apps, use Visual Studio 2015. To maintain Windows Phone 7.x projects, use Visual Studio 2012.
|Windows Store apps
Windows 10 SDKs before the Windows 10 Fall Creators Update (build 16299) have been removed from the Visual Studio 2019 installer. You can download the older SDKs manually or retarget your projects to use the newer SDKs.
Universal Windows Projects using project.json aren't supported. We recommend upgrading these projects to use package references. Alternately, add a reference to Microsoft.NET.Test.Sdk version 18.104.22.168 in the project.json file.
Projects for Windows Store 8.1 and 8.0 aren't supported in Visual Studio 2019. To maintain these apps, continue to use Visual Studio 2015.
|The Xamarin Live Player extension for Visual Studio and Visual Studio for Mac has been removed. This removes the pairing screen and any integration. Instead, use the built-in Xamarin.Forms Previewer.
The Visual Studio Emulator for Android has been removed from the Visual Studio Installer. Instead, use the new Hyper-V support in the Google Android emulator.
Migrate a project
While we try to maintain compatibility with previous versions, there can be changes that aren't compatible with previous versions. (See Platform Targeting and Compatibility for which project types are supported in Visual Studio 2019.) When this happens, a newer version of Visual Studio won't load the project or offer a migration path. You might have to maintain that project in a previous version of Visual Studio.
Sometimes, the newer version of Visual Studio can open a project, but it must update or migrate the project in a way that might render it incompatible with previous versions. Visual Studio uses the following criteria to determine whether such migration is necessary:
Compatibility with the target versions of platforms, back to Visual Studio 2013 RTM.
Compatibility of design-time assets with previous versions of Visual Studio. (Namely different channels of Visual Studio 2019, Visual Studio 2017; Visual Studio 2015 RTM & Update 3; Visual Studio 2013 RTM & Update 5; Visual Studio 2012 Update 4; Visual Studio 2010 SP 1.) Visual Studio 2019 aims to fail gracefully with deprecated design-time assets without corrupting them, such that previous versions can still open the project.
Whether new design time assets would break compatibility with previous versions down to Visual Studio 2013 RTM & Update 5.
The engineering team that owns the project type looks at these criteria and makes the call where support, compatibility, and migration are concerned. Again, we try to maintain compatibility between Visual Studio versions so that when you create and modify projects in one version of Visual Studio, it just works in other versions.
Sometimes, compatibility isn't possible. Then, Visual Studio opens the upgrade wizard to make the necessary one-way changes. These one-way changes might involve changing the
ToolsVersion property in the project file, which denotes exactly which version of MSBuild can turn the project's source code into the runnable and deployable artifacts that you want.
What renders a project incompatible with previous versions of Visual Studio isn't the Visual Studio version, but the MSBuild version, as determined by
ToolsVersion. If your version of Visual Studio contains the MSBuild toolchain that matches the
ToolsVersion in a project, then Visual Studio can invoke that toolchain to build the project.
To maintain compatibility with projects that you created in previous versions, Visual Studio 2019 includes the necessary MSBuild toolchains to support
ToolsVersion 15, 14, 12, and 4. Projects that use any of these
ToolsVersion values should result in a successful build. (Subject, again, to whether Visual Studio 2019 supports the project type, as described on Platform Targeting and Compatibility.)
You might be tempted to manually update or migrate a project to a newer
ToolsVersion value. It's unnecessary to make such a change, and would likely generate many errors and warnings that you must fix to get the project to build again. Also, if Visual Studio doesn't support a specific
ToolsVersion in the future, then the project triggers the project migration process when you open it because its
ToolsVersion value must be changed.
Refer to the following articles for further discussion: