.NET Framework から .NET Core にコードを移植するPort your code from .NET Framework to .NET Core

.NET Framework 上で実行されるコードがある場合は、.NET Core 上でコードを実行することにも関心があるかもしれません。If you've got code that runs on the .NET Framework, you may be interested in running your code on .NET Core, too. ここでは、移植プロセスの概要と、コードを .NET Core に移植するときに役立つツールの一覧を示します。Here's an overview of the porting process and a list of the tools you may find helpful when porting your code to .NET Core.

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

プロジェクトを .NET Core に移植する場合、次のプロセスを実行することをお勧めします。This is the process we recommend you take when porting your project to .NET Core. プロセスの各手順については、他の記事で詳しく説明します。Each step of the process is covered in more detail in further articles.

  1. サードパーティの依存関係を識別し、理解します。Identify and account for your third-party dependencies.

    この手順では、サードパーティの依存関係がどのようなものか、それらにどのように依存しているか、それらが .NET Core でも実行されるかどうかを確認する方法、および実行されない場合に従う手順について理解します。This step involves understanding what your third-party dependencies are, how you depend on them, how to check if they also run on .NET Core, and steps you can take if they don't. またここでは、.NET Core で使われる PackageReference 形式に依存関係を移行する方法についても説明しています。It also covers how you can migrate your dependencies over to the PackageReference format that is used in .NET Core.

  2. 移植するすべてのプロジェクトを、.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.

  3. .NET Portability Analyzer使用して、アセンブリを分析し、その結果に基づいて移植を行う計画を作成します。Use the .NET Portability Analyzer to analyze your assemblies and develop a plan to port based on its results.

    API Portability Analyzer ツールは、コンパイル済みアセンブリを分析し、レポートを生成します。これには、移植性に関する大まかな概要と、使用中の API のうちで .NET Core では利用できないものそれぞれについての内訳が記載されています。The API Portability Analyzer tool analyzes your compiled assemblies and generates a report that shows a high-level portability summary and a breakdown of each API you're using that isn't available on .NET Core. このレポートをコードベースの分析と共に使用して、コードを移植する方法の計画を作成します。You can use this report alongside an analysis of your codebase to develop a plan for how you'll port your code over.

  4. テスト コードを移植します。Port your tests 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 support .NET Core.

  5. 移植の計画を実行します。Execute your plan for porting!

移植プロセス中に使うと役立つツールを、次の一覧に示します。The following list shows tools you might find helpful to use during the porting process:

  • .NET Portability Analyzer - コマンド ライン ツールまたは Visual Studio 拡張機能。.NET Framework とターゲットの .NET Core プラットフォームの間のコードの移植性に関するレポートを生成できるツールです。.NET Portability Analyzer - command line tool or Visual Studio Extension, a tool that can generate a report of how portable your code is between .NET Framework and your target .NET Core platform. レポートには、ターゲットの .NET Core プラットフォームにない型と API のアセンブリごとの内訳が含まれています。The report contains an assembly-by-assembly breakdown of the Type and APIs missing on the target .NET Core platform. 詳細については、.NET Portability Analyzer に関するページをご覧ください。For more information, see .NET Portability Analyzer. .NET Portability Analyzer ツールは不足している API の間のギャップを特定する助けになるため、移植を開始する前に実行することをお勧めします。It is recommended to run the .NET Portability Analyzer tool before you start porting, as it will help you identify any gaps in missing APIs.
  • .NET API アナライザー - プラットフォームに PlatformNotSupportedException をスローし、非推奨の API の呼び出しを検出し、さまざまなプラットフォームでの C# API の互換性リスクの可能性を検出する .NET Standard API を検出する Roslyn アナライザー。.NET API Analyzer - A Roslyn analyzer that discovers .NET Standard API that throws PlatformNotSupportedException on some platforms, detects calls to deprecated APIs, and discovers some other potential compatibility risks for C# APIs on different platforms. 詳細については、「.NET API アナライザー」をご覧ください。For more information, see .NET API analyzer. このアナライザーは .NET Core プロジェクトを作成した後、異なるプラットフォームでのランタイムの動作の違いを特定するために役立ちます。This analyzer is helpful after you already created your .NET Core project to identify runtime behavior differences on different platforms.
  • Reverse Package Search - 型を検索し、その型を含むパッケージを検索するための便利な Web サービスReverse Package Search - A useful web service that allows you to search for a type and find packages containing that type.

さらに、CsprojToVs2017 ツールを使って、小規模なソリューションや個々のプロジェクトを .NET Core プロジェクトのファイル形式に移植してみることが可能です。Additionally, you can attempt to port smaller solutions or individual projects to the .NET Core project file format with the CsprojToVs2017 tool.


CsprojToVs2017 はサードパーティ製のツールです。CsprojToVs2017 is a third-party tool. すべてのプロジェクトに対してこれが動作する保証はありません。また、依存している動作に微妙な変更が生じる可能性があります。There is no guarantee that it will work for all of your projects, and it may cause subtle changes in behavior that you depend on. CsprojToVs2017 は、自動化できる基本的なことを自動化するための "開始点" として使う必要があります。CsprojToVs2017 should be used as a starting point that automates the basic things that can be automated. これは、プロジェクトのファイル形式の移行に対する保証されたソリューションではありません。It is not a guaranteed solution to migrating project file formats.