.NET Framework と .NET の両方をサポートするようにプロジェクトを整理する

.NET Framework と .NET 両方のコンパイルに同時に対応するソリューションを作成できます。 この記事では、この目標を達成するために役立つ、いくつかのプロジェクトの整理のオプションについて説明します。 ここでは、.NET でプロジェクト レイアウトを設定する方法について決定するときに考慮する典型的なシナリオを紹介します。 一覧では必要なすべてのものがカバーされていない可能性があります。

  • 既存のプロジェクトと .NET プロジェクトを結合し、1 つのプロジェクトを作成する

    利点:

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

    欠点:

  • すべてのプロジェクトを個別に保持する

    利点:

    • Visual Studio 2019 以降を持っていない場合がある開発者と共同作成者に対して、既存のプロジェクトの開発をサポートします。
    • 既存のプロジェクトで新しいバグが発生する可能性が減ります。既存のプロジェクトではコード チャーンが要求されないためです。

この GitHub リポジトリの例について考えてください。 次の図では、このリポジトリのレイアウト方法が示されています。

Existing project structure diagram

以下のセクションでは、サンプル リポジトリに基づいて .NET のサポートを追加するいくつかの方法について説明します。

既存の複数のプロジェクトを複数のターゲットを持つ .NET プロジェクトに置き換える

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

project that targets multiple frameworks diagram

コードの例については、GitHub を参照してください。

注目するべき変更点:

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

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

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

.NET project with existing projects in a different folder diagram

コードの例については、GitHub を参照してください。

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

関連項目