Visual Studio 图标Visual Studio 2022 移植、迁移和升级项目


提示

观看 Visual Studio 2022 发布活动的录制内容,了解新功能,听取提示和技巧,并下载免费的数字材料。

开发者社区 | Visual Studio 2022 路线图 | 系统要求 | 兼容性 | 可分发代码 | 发行历史记录 | 许可条款 | 博客 | 最新版本已知问题 | Visual Studio 新增功能文档


Visual Studio 的每个新版本都支持大部分项目、文件和其他资产类型。 只要不依赖于新功能,就可以像往常一样使用它们。

我们尝试保留与早期版本的后向兼容性,如 Visual Studio 2019、Visual Studio 2017、Visual Studio 2015、Visual Studio 2013 和 Visual Studio 2012。 但是,对某些项目类型的支持会随着时间的推移而更改。 较新版本的 Visual Studio 可能根本不支持某些项目,或者可能需要更新项目,使其不再向后兼容。

注意

有关迁移问题的当前状态,请参阅 Visual Studio 开发人员社区。 若要详细了解哪些功能特定于对应的 Visual Studio 版本,请参阅发行说明

重要

某些项目类型需要特定工作负载。 如果尚未安装工作负荷,Visual Studio 将报告未知的或不兼容的项目类型。 在这种情况下,请检查 Visual Studio 安装程序中的安装选项,然后重试。 有关 Visual Studio 2022 中项目支持的详细信息,请参阅平台目标和兼容性页。

项目类型

以下列表描述了 Visual Studio 2022 中对在之前版本中创建的项目的支持。

如果在此处未看到任何项目或文件类型(此处本应出现这些内容),请参阅本文的 Visual Studio 2019 版本。 还可以使用本页底部“发送和查看有关以下内容的反馈”>“本页”按钮来提供项目的详细信息。 (如果使用匿名“此页面是否有用?”控件,我们将无法响应反馈。)

项目类型 支持
.NET Core 项目 (xproj) 使用 Visual Studio 2015 旧预览工具创建的项目,其中包括 xproj 项目文件。

Visual Studio 2017:不支持 xproj 格式,除非迁移到 csproj 格式。 当你打开 xproj 文件时,系统将提示你将文件迁移到 SDK 样式的 .csproj 格式。 (创建 xproj 文件的备份。)Visual Studio 2015 及更早版本不支持使用 SDK 样式的 csproj 项目。

Visual Studio 2019:在版本 16.3 和更高版本中,无法加载或迁移 xproj 项目。 有关详细信息,请参阅将 .NET Core 项目迁移到 csproj 格式
ASP.NET Web 应用和启用了 Application Insights 的 ASP.NET Core Web 应用 对于每个 Visual Studio 用户,资源信息存储在每个用户实例的注册表中。 用户在不打开项目,但想要搜索 Azure Application Insights 数据的情况下,可使用此信息。 Visual Studio 2015 使用与 Visual Studio 2017、Visual Studio 2019 和 Visual Studio 2022 不同的注册表位置,且未发生冲突。

用户创建 ASP.NET Web 应用程序、ASP.NET Core Web 应用或 ASP.NET Core Web 应用程序后,资源存储在 .suo 文件中。 用户可在 Visual Studio 2015、Visual Studio 2017、Visual Studio 2019 或 Visual Studio 2022 中打开项目,只要 Visual Studio 支持每个版本中使用的项目和解决方案,资源信息就可用于这些版本。 用户需要在每个产品上进行一次身份验证。 例如,如果使用 Visual Studio 2017 创建项目,然后在 Visual Studio 2022 中打开,则用户需要在 Visual Studio 2022 上进行身份验证。
C#/Visual Basic Web 窗体或 Windows 窗体 可以在 Visual Studio 2022、Visual Studio 2019、Visual Studio 2017 和 Visual Studio 2015 中打开此项目。
编码的 UI 测试 在 Visual Studio 2019 中,已弃用自动 UI 驱动功能测试的编码的 UI 测试。

Visual Studio 2019 将是编码的 UI 测试的最后一个版本。 建议使用 Selenium 来测试 Web 应用,使用 Appium 和 WinAppDriver 来测试桌面和 UWP 应用。
数据库单元测试项目(csproj、.vbproj) 较旧的数据单元测试项目在 Visual Studio 2019 中加载,但将使用 GAC 版本的依赖关系。 若要升级单元测试项目以使用最新的依赖关系,请在“解决方案资源管理器”中右键单击该项目,然后选择“转换为 SQL Server 单元测试项目...”。
F# Visual Studio 2019 可以打开 Visual Studio 2013、Visual Studio 2015 和 Visual Studio 2017 中创建的项目。 对于新项目来说,与较旧的 Visual Studio 模板的关键区别是 FSharp.Core 版本现在始终是 NuGet 包。 默认情况下,F# 随任何 .NET 工作负载安装。
InstallShield
MSI 安装程序
借助 Visual Studio 安装程序项目扩展,在 Visual Studio 2010 中创建的安装程序项目可在更高版本中打开。 另请参阅 WiX Toolset Visual Studio 2017 Extension(WiX 工具集 Visual Studio 2017 扩展)。 Visual Studio 不再附带 InstallShield Limited Edition。 有关 Visual Studio 2022 的可用性,请参阅 Revenera
LightSwitch Visual Studio 2022、Visual Studio 2019 或 Visual Studio 2017 不再支持 LightSwitch。 使用 Visual Studio 2012 及早期版本创建并在 Visual Studio 2013 或 Visual Studio 2015 中打开的项目进行升级,之后只能在 Visual Studio 2013 或 Visual Studio 2015 中打开。
负载测试 Visual Studio 2019 已弃用 Web 性能和负载测试功能。

Visual Studio 2019 将是负载测试的最后一个版本。 使用替代的负载测试工具(例如 Apache JMeter、Akamai CloudTest、Blazemeter)。
Microsoft Azure Tools for Visual Studio 若要打开这些类型的项目,请首先安装 Azure SDK for .NET,然后打开该项目。 如有必要,请更新项目。
Microsoft 测试管理器 从 Visual Studio 2019 开始,Visual Studio 中将不再随附 Microsoft 测试管理器和 Feedback Client。

利用 Azure Test Plans(Azure DevOps 的一部分)满足手动和探索性测试需求。
模型-视图-控制器框架 (ASP.NET MVC) 对 MVC 版本和 Visual Studio 的支持:
  • Visual Studio 2010 SP1 支持 MVC 2 和 MVC 3;通过ASP.NET 4 MVC 4 for Visual Studio 2010 SP1 下载添加 MVC 4 支持
  • Visual Studio 2012 仅支持 MVC 3 和 MVC 4
  • Visual Studio 2013 仅支持 MVC 4 和 MVC 5
  • Visual Studio 2019、Visual Studio 2017 和 Visual Studio 2015 支持 MVC 4(可打开现有项目但无法创建新项目)和 MVC 5

升级 MVC 版本:
建模 如果允许 Visual Studio 自动更新项目,则可以在 Visual Studio 2015、Visual Studio 2013 或 Visual Studio 2012 中打开该项目。

自 Visual Studio 2015 以来,建模项目格式没有发生变化,可以在这些版本中打开和修改项目。 但是,Visual Studio 2017 和 Visual Studio 2019 中的行为具有差异:
  • 建模项目现被称为菜单和模板中的“依赖关系验证”项目。
  • Visual Studio 2017 和 Visual Studio 2019 不再支持 UML 关系图。 UML 文件照常在解决方案资源管理器中列出,但会以 XML 文件形式打开。 使用 Visual Studio 2015 查看、创建或编辑 UML 关系图。
  • 在 Visual Studio 2019 中,生成建模项目时不再验证体系结构依赖关系。 但将在生成每个代码时进行验证。 此更改不会影响建模项目,但它需要对所验证的代码项目进行更改。 Visual Studio 2019 可以自动对代码项目执行必要的更改。
MSI 安装程序 (vdproj) 请参阅此页的 InstallShield 部分。
Office 2007 VSTO 需要 Visual Studio 2022 单向升级。
Office 2010 VSTO 如果项目面向 .NET Framework 4,则可以在 Visual Studio 2010 SP1 及更高版本中打开此项目。 所有其他项目需要单向升级。
可移植类库 (PCL) 当前不支持可移植类库(或 PCL)。 Visual Studio 2019 将仍然会打开并生成它们,但是不可能创建新的 PCL 项目。 建议将 PCL 项目中的代码迁移到 .NET Standard 项目。

默认情况下将不再包含 PCL 支持,但在 Visual Studio 的“单个组件”选项卡上可以使用。
Python 工作负荷 Visual Studio 2019 删除了 Python Windows IoT Core 应用的支持。 在 Visual Studio 2022 中没有相应的功能,因此,此类项目没有自动迁移路径。

可以继续使用 Visual Studio 2017。
R Tools for Visual Studio 已从 Visual Studio 2019 的数据科学工作负载中删除了针对 Visual Studio 的 R 工具。

可以继续使用 Visual Studio 2017 或替代产品(例如 RStudio)。
Service Fabric (sfproj) 在 Visual Studio 2017 或 Visual Studio 2019 中创建的 Service Fabric 应用程序项目无需经过更改就能在 Visual Studio 2022 中打开。
在不使用“优化 ARM 部署的项目布局”选项的情况下在 Visual Studio 2022 中创建的 Service Fabric 应用程序项目可以在 Visual Studio 2019 16.5 或更高版本中打开。
在使用“优化 ARM 部署的项目布局”选项的情况下在 Visual Studio 2022 中创建的 Service Fabric 应用程序项目可以在 Visual Studio 2019 16.10 或更高版本中打开。
SharePoint 2010 使用 Visual Studio 2022 打开 SharePoint 解决方案项目时,它将升级为 SharePoint 2016 或 SharePoint 2019。 “.NET 桌面开发”工作负载必须安装到 Visual Studio 中,以便升级。

有关如何升级 SharePoint 项目的详细信息,请参阅升级和更新 SharePoint
SharePoint 2016 不能在 Visual Studio 2022 中打开 Office 开发人员工具预览版 2 中创建的 SharePoint 加载项项目。 若要解除此限制,需要在 csproj vbproj 文件中将 MinimumVisualStudioVersion 更新到 12.0 并将 MinimumOfficeToolsVersion 更新到 12.2。
Silverlight Visual Studio 2022 不支持 Silverlight 项目。 若要继续使用 Silverlight 应用程序,请继续使用 Visual Studio 2015。
SQL - Redgate Visual Studio 安装程序中不再随附 Redgate 的 SQL Change Automation Core(以前称为 ReadyRoll Core)、SQL Prompt Core 和 SQL 搜索。

可以继续使用 Visual Studio 2017 获取这些功能。 在 Visual Studio 2019 中,可以升级到 Redgate 的 SQL Toolbelt 中提供的付费 SQL Change Automation 和 SQL Prompt 产品。
SQL Server Reporting Services 和 SQL Server Analysis Services(SSRS、SSDT、SSAS、MSAS) 通过 Visual Studio 库中的两个扩展来提供对这些项目类型的支持:Microsoft Analysis Services 项目Microsoft Reporting Services 项目。 Visual Studio 2019 的数据存储和处理工作负载中还包括 SSDT 支持。 有关详细信息,请参阅下载并安装 SQL Server Data Tools (SSDT) for Visual Studio 页。
SQL Server Integration Services (SSIS) SQL Server Integration Services Projects 扩展已正式可用于 Visual Studio 2022。 请从 SQL Server Integration Services Projects 2022 - Visual Studio Marketplace 下载,有关故障排除指导,请参阅排除故障指南
测试窗口扩展 在 Visual Studio 2019 中,删除了一些以前标记为公开但从未正式记录过的测试窗口 API。 在 Visual Studio 2017 中,广泛可见的 API 被标记为已弃用,以便为扩展维护人员提供早期警告。 据我们所知,很少有扩展依赖这些 API。 有关详细信息和更新,请查看已弃用的与测试相关的 API 完整列表。 如果这会影响你的方案,请通过 Visual Studio 开发者社区告诉我们。
TypeScript Visual Studio 2022 中已弃用 TypeScript SDK,该项默认不会再安装在任何工作负载中。 编译 TypeScript 的项目应安装 Microsoft.TypeScript.MSBuild NuGet 包。 要支持无法立即升级的项目,仍可在 Visual Studio 安装程序以及 Visual Studio Marketplace 中将 TypeScript SDK 作为可选组件提供。
Visual C++ Visual Studio 2022 可用于在 Visual Studio 的早期版本中(追溯到 Visual Studio 2010)创建的项目中工作。 首次打开项目时,可以选择升级到最新的编译器和工具集,或者继续使用原始编译器和工具集。 如果选择继续使用原始编译器和工具集,Visual Studio 2022 将不会修改项目文件,并使用早期版本 Visual Studio 安装中的工具集来生成项目。 选择继续使用原始编译器和工具集意味着你仍可以在 Visual Studio 的原始版本中打开项目(如有必要)。 有关详细信息,请参阅 使用 Visual Studio 中的本机多重目标生成旧项目
Visual Studio 扩展性/VSIX 更新 MinimumVersion 14.0 或更低版本中的项目以声明 MinimumVersion 15.0,这样可防止在早期版本的 Visual Studio 中打开该项目。 若要允许在早期版本中打开项目,请将 MinimumVersion 设置为 $(VisualStudioVersion)。 另请参阅如何:将扩展性项目迁移到 Visual Studio 2017
Visual Studio 实验室管理工具版 你可以使用 Microsoft 测试管理器或 Visual Studio 2010 SP1 及更高版本打开在以上任一版本中创建的环境。 但对于 Visual Studio 2010 SP1,在可以创建环境之前,Microsoft 测试管理器的版本必须与 Team Foundation Server 的版本匹配。 (重要说明:Team Foundation Server 或 TFS 现在称为 Azure DevOps Server。)
Visual Studio Tools for Apache Cordova 在 Visual Studio 2019 中删除了对 Apache Cordova 的支持。 在 Visual Studio 2022 中没有相应的功能,因此,此类项目没有自动迁移路径。

可以将 Cordova 工具用于 Visual Studio Code 扩展(其为最新版本的 Cordova 提供支持),也可以继续使用 Visual Studio 2017。
Web 部署 (wdproj) Visual Studio 2012 中已删除对 Web 部署项目的支持,而添加了发布配置文件支持。 在 Visual Studio 2022 中没有相应的功能,因此,此类项目没有自动迁移路径。 而是,在文本编辑器中打开 wdproj 文件,并将任何自定义项复制粘贴到 pubxml(发布配置文件)文件中,如 StackOverflow 中所述。
Windows Communication Foundation, Windows Workflow Foundation 可以在 Visual Studio 2022、Visual Studio 2019、Visual Studio 2017、Visual Studio 2015、Visual Studio 2013 和 Visual Studio 2012 中打开此项目。
Windows Presentation Foundation 可以在 Visual Studio 2022、Visual Studio 2019、Visual Studio 2017、Visual Studio 2013 和 Visual Studio 2012 和 Visual Studio 2010 SP1 中打开此项目。
Windows Phone 应用 Visual Studio 2022 不支持 Windows Phone 项目。

要继续使用 Windows Phone 8.x 应用,请使用 Visual Studio 2015。 要继续使用 Windows Phone 7.x 项目,请使用 Visual Studio 2012。
Windows 应用商店应用程序 Visual Studio 2022 不支持 JavaScript Universal Windows 项目。 要继续使用这些项目,请使用 Visual Studio 2017。

Windows 10 Fall Creators Update(内部版本 16299)之前的 Windows 10 SDK 已从 Visual Studio 2019 安装程序中删除。 可以手动下载旧版 SDK,也可以重定向项目以使用较新的 SDK。

不支持使用 project.json 的通用 Windows 项目。 建议升级这些项目以使用包引用。 或者,在 project.json 文件中添加对 Microsoft.NET.Test.Sdk 版本 16.0.0.0 的引用。

Visual Studio 2022 不支持 Windows Store 8.1 和 8.0 的项目。 要继续使用这些应用,请继续使用 Visual Studio 2015。
Xamarin 从 Visual Studio 2022 17.11 开始,Xamarin 不再受支持。 而应将 Xamarin 项目升级到 .NET MAUI

迁移项目

尽管我们尝试保持与早期版本的兼容性,但可能存在与早期版本不兼容的更改。 发生这种情况时,较新版本的 Visual Studio 不会加载项目或提供迁移路径。 可能必须在早期版本的 Visual Studio 中维护该项目。 有关 Visual Studio 2022 中支持的项目类型的详细信息,请参阅平台目标和兼容性页。

有时,较新版本的 Visual Studio 可以打开项目,但必须以可能导致其与之前的版本不兼容的方式更新或迁移该项目。 Visual Studio 使用以下条件来确定是否需要此类迁移:

  • 与平台目标版本(Visual Studio 2013 RTM 及更高版本)的兼容性。

  • 设计时资产与 Visual Studio 早期版本的兼容性。 (即,Visual Studio 2022、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 SP1 的不同通道。)Visual Studio 2022 旨在正常退出已弃用的设计时资产,而不损坏这些资产,使之前的版本仍可以打开该项目。

  • 新设计时资产是否会破坏与早期版本(Visual Studio 2013 RTM & Update 5 及更高版本)的兼容性。

拥有项目类型的工程团队可查看这些条件,并确定需要支持、兼容性和迁移的位置。 同样,我们尝试保持 Visual Studio 各版本之间的兼容性,以便在某一 Visual Studio 版本中创建和修改项目时,它也可在其他版本中工作。

有时无法实现兼容性。 然后,Visual Studio 会打开升级向导以进行必要的单向更改。 这些单向更改可能涉及更改项目文件中的 ToolsVersion 属性,该属性明确表示哪个 MSBuild 版本可以将项目的源代码转变为所需的可运行且可部署的项目。

导致项目与 Visual Studio 早期版本不兼容的不是 Visual Studio 版本,而是由 ToolsVersion 确定的 MSBuild 版本。 如果 Visual Studio 版本包含与项目中的 ToolsVersion 匹配的 MSBuild 工具链,Visual Studio 就可以调用该工具链来生成项目。

为了保持与早期版本中创建的项目的兼容性,Visual Studio 2022 包含了必要的 MSBuild 工具链来支持 ToolsVersion 15、14、12 和 4。 使用任意这些 ToolsVersion 值的项目都可进行成功的生成。 (再次强调,有关 Visual Studio 2022 是否支持项目类型的主题,请参阅平台目标和兼容性。)

你可能想要将项目手动更新或迁移到更新的 ToolsVersion 值。 无需进行此类更改,进行该更改可能会产生许多错误和警告,必须修复它们并再次生成项目。 此外,如果 Visual Studio 将来不支持特定的 ToolsVersion,则当你打开项目时,项目会触发项目迁移过程,因为必须更改其 ToolsVersion 值。

前期 MSBuild 项目

警告

前期 MSBuild .NET 项目(即使用早于 MSBuild 的 Visual Studio 版本创建的 .NET 项目)仅在使用 Visual Studio 版本升级到 Visual Studio 17.12 版本时可转换。 使用 Visual Studio 版本 17.13 或更高版本时,项目不可转换。 现在可能仍需要使用 Visual Studio 17.12 转换任何此类项目,并存储转换后的结果。 其他项目格式将继续可转换,早期 Visual Studio 版本将继续转换,即使今后使用前期 MSBuild 项目文件也如此。 但是,仍建议存储转换后的结果,如 Visual Studio 的未来版本或 Visual Studio 早期版本的未来更新(包括 2017 和 2019)所示,升级功能的其他限制可能适用。