将代码从 .NET Framework 移植到 .NET CorePort your code from .NET Framework to .NET Core
本文内容
如果有在 .NET Framework 上运行的代码,用户也可能会对在 .NET Core 上运行代码感兴趣。下面提供了移植过程的概述以及在将代码移植到 .NET Core 时可能非常有用的工具列表。
移植过程概述Overview of the porting process
这是我们建议在将项目移植到.NET Core 时采取的过程。该过程的每个步骤将在以后的文章中详细介绍。
- 标识并记录第三方依赖项。
此步骤包含了解什么是第三方依赖项,如何依赖于它们,如何查看它们是否也在 .NET Core 上运行,以及如果没有在其上运行可以采取的步骤。它还介绍了如何将依赖项迁移到 .NET Core 中使用的 PackageReference 格式。
- 将希望移植的所有项目重定向到目标 .NET Framework 4.7.2 或更高版本。
此步骤可确保在 .NET Core 不支持特殊 API 的情况下,可以为特定于 .NET Framework 的目标使用备用 API。
- 使用 .NET Portability Analyzer 来分析程序集并基于结果制定移植计划。
API Portability Analyzer 工具分析已编译的程序集并生成报表,该报表将显示高级可移植性摘要和不可用于目标 .NET Core 平台公共图面上的正在使用的每个 API 的细目。可以使用此报表和代码库的分析结果一起制定移植代码的计划。
将项目文件转换为目标 .NET Core 版本后,可以使用基于 Roslyn 的 .NET API 分析器来确定在一些平台上触发 PlatformNotSupportedException 的 API 以及一些其他潜在兼容性问题。
移植测试代码。
由于移植到 .NET Core 对代码库来说是很大的更改,因此强烈建议移植测试代码,以便在移植代码时可以进行测试。MSTest、xUnit 和 NUnit 都支持 .NET Core。
- 执行移植计划!
以下列表显示了在移植过程中使用可能有所帮助的工具:
- .NET 可移植性分析器 - 命令行工具或 Visual Studio 扩展,一款可就代码在 .NET Framework 与目标 .NET Core 平台之间的可移植性生成报表的工具。此报表按逐个程序集细分列出了目标 .NET Core 平台上缺少的类型和 API。有关详细信息,请参阅 .NET Portability Analyzer。建议开始移植之前先运行 .NET 可移植性分析器工具,因为它可帮助确定特定目标 .NET 平台公共图面上缺少的 API 中的任何空白。
- .NET API 分析器 - 一款 Roslyn 分析器,可用于发现在某些平台上引发 PlatformNotSupportedException 的 .NET Standard API、检测对已弃用的 API 的调用,并发现不同平台上针对 C# API 的潜在兼容性风险。有关详细信息,请参阅 .NET API 分析器。在已创建 .NET Core 项目来确定不同平台上的运行时行为差异之后,此分析器非常有用。
- Reverse Package Search - 一个有用的 Web 服务,能够实现搜索某一类型并找到包含该类型的包。此外,可以尝试使用 CsprojToVs2017 工具将较小的解决方案或单个项目移植到 .NET Core 项目文件格式。
警告
CsprojToVs2017 是第三方工具。不能保证它适用于所有项目,而且它可能会导致所依赖的行为发生细微变化。CsprojToVs2017 应作为一个起点 ,以自动化可自动执行的基本操作。它不是迁移项目文件格式的有保证的解决方案。