次の方法で共有


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

.NET Framework と .NET の両方を並行してコンパイルするソリューションを作成できます。 この記事では、この目標を達成するために役立ついくつかのプロジェクト編成オプションについて説明します。 .NET を使用してプロジェクト レイアウトを設定する方法を決定する際に考慮すべき一般的なシナリオを次に示します。 リストには、必要なものがすべて含まれていない場合があります。

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

    利点:

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

    欠点:

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

    利点:

    • Visual Studio 2019 以降のバージョンを持たない可能性がある開発者と共同作成者向けに、既存のプロジェクトでの開発をサポートします。
    • 既存のプロジェクトで新しいバグを作成する可能性が低くなります。これらのプロジェクトではコード チャーンが必要ないためです。

この GitHub リポジトリの例を考えてみましょう。 次の図は、このリポジトリがどのようにレイアウトされているかを示しています。

既存のプロジェクト構造図

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

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

既存の *.csproj ファイルが削除され、複数のフレームワークを対象とする 1 つの *.csproj ファイルが作成されるように、リポジトリを再構成します。 1 つのプロジェクトが異なるフレームワーク用にコンパイルできるため、これは優れたオプションです。 また、対象となるフレームワークごとに異なるコンパイル オプションと依存関係を処理する機能もあります。

複数のフレームワークを対象とするプロジェクトの図

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

メモの変更点は次のとおりです。

  • packages.config*.csproj を新しい .NET *.csproj に置き換えます。 NuGet パッケージは、 <PackageReference> ItemGroupで指定されます。

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

古いフレームワークを対象とする既存のプロジェクトがある場合は、これらのプロジェクトをそのまま残し、.NET プロジェクトを使用して将来のフレームワークをターゲットにすることもできます。

別のフォルダー図内の既存のプロジェクトを含む .NET プロジェクト

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

.NET と既存のプロジェクトは別々のフォルダーに保持されます。 プロジェクトを別々のフォルダーに保持すると、Visual Studio 2019 以降のバージョンを強制的に使用する必要がなくなります。 古いプロジェクトのみを開く別のソリューションを作成できます。

こちらも参照ください