プロジェクトを整理し、.NET Framework と .NET Core をサポートする

この記事は、プロジェクト所有者が横並びの .NET Framework と .NET Core に対してソリューションをコンパイルするときに役立ちます。 プロジェクトを整理するためのオプションを提供し、開発者を支援します。 次の一覧で、.NET Core でプロジェクト レイアウトを設定する方法について決定するときに考慮する典型的なシナリオを紹介します。 この一覧はプロジェクトのニーズに基づいて選択されており、すべてを網羅しるわけではりません。

  • 既存のプロジェクトと .NET Core プロジェクトを結合し、シングル プロジェクトを作成する

    効果:

    • 複数のプロジェクトをコンパイルするのではなく、シングル プロジェクトをコンパイルすることでビルド プロセスをシンプルにします。それぞれ、異なる .NET Framework バージョンまたはプラットフォームをターゲットにします。
    • ターゲットが複数のプロジェクトのソース ファイル管理をシンプルにします。シングル プロジェクト ファイルを管理することになります。 ソース ファイルの追加/削除時、代替方法では、これらを他のプロジェクトと手動で同期する必要があります。
    • 使用する NuGet パッケージを簡単に生成します。
    • コンパイラ ディレクティブを利用することで、ライブラリの特定の .NET Framework バージョンに対してコードを記述できます。

    サポートされていないシナリオ:

  • 既存のプロジェクトと新しい .NET Core プロジェクトを別々に保存する

    効果:

    • 既存のプロジェクトで引き続き開発をサポートします。Visual Studio 2017 を所有していない開発者/貢献者はアップグレードする必要がありません。
    • 既存のプロジェクトで新しいバグが発生する可能性が減ります。既存のプロジェクトではコード チャーンが要求されないためです。

次のリポジトリを考慮してください。

既存のプロジェクト

ソース コード

下に説明する既存のプロジェクトの制約や複雑性にもよりますが、このリポジトリのために .NET Core のサポートを追加する方法がいくつかあります。

既存のプロジェクトとターゲットが複数ある .NET Core Project を置換します

リポジトリを再整理できます。既存の *.csproj ファイルが削除され、複数のフレームワークをターゲットにするシングル *.csproj ファイルが作成されます。 異なるフレームワークに対してシングル プロジェクトでコンパイルできるので、この方法が推奨されます。 さまざまなコンパイル オプション、ターゲットにするフレームワークごとの依存関係などを処理することもできます。

複数のフレームワークをターゲットにする csproj の作成

ソース コード

注目するべき変更点:

  • packages.config*.csproj が新しい .NET Core *.csproj に置き換わりました。 NuGet パッケージが <PackageReference> ItemGroup で指定されています。

既存のプロジェクトを保持し、.NET Core プロジェクトを作成する

古いフレームワークをターゲットにする既存のプロジェクトがあるとき、そのようなプロジェクトをそのまま残し、.NET Core プロジェクトを利用して今後のフレームワークをターゲットにすると効率的な場合があります。

別のフォルダーに既存のプロジェクトがある .NET Core プロジェクト

ソース コード

注目するべき変更点:

  • .NET Core と既存のプロジェクトを別々のフォルダーに保存します。
    • プロジェクトを別々のフォルダーに保存すれば、Visual Studio 2017 を所有する必要がありません。 古いプロジェクトだけを開く別個のソリューションを作成できます。

関連項目

.NET Core に移行する方法の詳細なガイダンスについては、.NET Core の移植に関するドキュメントのページを参照してください。