.NET Framework から .NET Core への移植プロセスの概要Overview of the porting process from .NET Framework to .NET Core

現在 .NET Framework で実行しているコードの .NET Core への移植を検討する場合があります。You might have code that currently runs on the .NET Framework that you're interested in porting to .NET Core. この記事では、次の内容について説明します。This article provides:

  • 移植プロセスの概要。An overview of the porting process.
  • コードを .NET Core に移植するときに役立つツールの一覧。A list of the tools you may find helpful when you're porting your code to .NET Core.

移植プロセスの概要Overview of the porting process

プロジェクトを .NET Core に移植する場合は、次の手順を使用することをお勧めします。We recommend you to use the following process when porting your project to .NET Core:

  1. 移植するすべてのプロジェクトを、.NET Framework 4.7.2 以降をターゲットとするように再ターゲットします。Retarget all projects you wish to port to target the .NET Framework 4.7.2 or higher.

    この手順により、.NET Core で特定の API がサポートされない場合に、.NET Framework 固有のターゲットに対して API の代替を確実に使用できます。This step ensures that you can use API alternatives for .NET Framework-specific targets when .NET Core doesn't support a particular API.

  2. .NET Portability Analyzer を使ってアセンブリを分析し、それらが .NET Core に移植可能かどうかを確認します。Use the .NET Portability Analyzer to analyze your assemblies and see if they're portable to .NET Core.

    API Portability Analyzer ツールによって、コンパイル済みのアセンブリが分析され、レポートが生成されます。The API Portability Analyzer tool analyzes your compiled assemblies and generates a report. このレポートには、移植性に関する大まかな概要と、使用している API のうち NET Core では利用できないものそれぞれについての内訳が表示されます。This report shows a high-level portability summary and a breakdown of each API you're using that isn't available on NET Core.

  3. .NET API アナライザーをプロジェクトにインストールして、一部のプラットフォームで PlatformNotSupportedException をスローする API と、発生する可能性のあるその他の互換性の問題を識別します。Install the .NET API analyzer into your projects to identify APIs throwing PlatformNotSupportedException on some platforms and some other potential compatibility issues.

    このツールは移植性アナライザーに似ていますが、.NET Core 上にビルドできるかどうかが分析される代わりに、実行時に PlatformNotSupportedException をスローするような方法で API を使っているかどうかが分析されます。This tool is similar to the portability analyzer, but instead of analyzing if things can build on .NET Core, it will analyze if you're using an API in a way that will throw the PlatformNotSupportedException at runtime. .NET Framework 4.7.2 以上から移行する場合、これは一般的ではありませんが、確認することをお勧めします。Although this isn't common if you're moving from .NET Framework 4.7.2 or higher, it's good to check.

  4. Visual Studio の変換ツールを使用して、すべての packages.config の依存関係を PackageReference 形式に変換します。Convert all of your packages.config dependencies to the PackageReference format with the conversion tool in Visual Studio.

    この手順では、依存関係を従来の packages.config 形式から変換します。This step involves converting your dependencies from the legacy packages.config format. packages.config は .NET Core では機能しないため、パッケージの依存関係がある場合は、この変換が必須です。packages.config doesn't work on .NET Core, so this conversion is required if you have package dependencies.

  5. .NET Core 用の新しいプロジェクトを作成してソース ファイルをコピーするか、ツールを使って既存のプロジェクト ファイルの変換を試みます。Create new projects for .NET Core and copy over source files, or attempt to convert your existing project file with a tool.

    .NET Core では、.NET Framework よりも簡素化された (異なる) プロジェクト ファイル形式が使用されます。.NET Core uses a simplified (and different) project file format than .NET Framework. 続行するには、プロジェクト ファイルをこの形式に変換する必要があります。You'll need to convert your project files into this format to continue.

  6. テスト コードを移植します。Port your test code.

    .NET Core への移植はコードベースにとって大きな変更となるため、コードの移植時にテストを実行できるように、テストを移植することを強くお勧めします。Because porting to .NET Core is such a significant change to your codebase, it's highly recommended to get your tests ported, so that you can run tests as you port your code over. MSTest、xUnit、NUnit はすべて .NET Core で動作します。MSTest, xUnit, and NUnit all work on .NET Core.

さらに、dotnet try-convert ツールを使って、より小規模なソリューションや個人のプロジェクトを、1 つの操作で .NET Core プロジェクトのファイル形式に移植してみることが可能です。Additionally, you can attempt to port smaller solutions or individual projects to the .NET Core project file format with the dotnet try-convert tool in one operation. dotnet try-convert がすべてのプロジェクトに対して動作する保証はありません。また、依存していた動作に微妙な変更が生じる原因となる可能性があります。dotnet try-convert is not guaranteed to work for all your projects, and it may cause subtle changes in behavior that you may find that you depended on. これは、自動化できる基本的なことを自動化するための "開始点" として使う必要があります。It should be used as a starting point that automates the basic things that can be automated. これは、プロジェクトの移行に対する保証されたソリューションではありません。It isn't a guaranteed solution to migrating a project.