ターゲット.NET Frameworkエラーのトラブルシューティング

適用対象: Visual Studio

このトピックでは、参照の問題が原因で発生する可能性がある MSBuild エラーと、それらのエラーを解決する方法について説明します。

別のバージョンの .NET を対象とするプロジェクトまたはアセンブリを参照する

さまざまなバージョンの .NET を対象とするプロジェクトまたはアセンブリを参照するアプリケーションを作成できます。 たとえば、.NET 6 をターゲットとするが、.NET Core 3.1 をターゲットとするアセンブリを参照するアプリケーションを作成できます。 ただし、以前のバージョンの .NET を対象とするプロジェクト内の参照を、.NET 6 を対象とするプロジェクトまたはアセンブリに設定することはできません。 この場合に発生する可能性があるエラーの例を次に示します。

error NU1201: Project ClassLibrary-NET6 is not compatible with netcoreapp3.1 (.NETCoreApp,Version=v3.1). Project ClassLibrary-NET6 supports: net6.0 (.NETCoreApp,Version=v6.0)
2>Done building project "ClassLibrary-NET31.csproj" -- FAILED.

このエラーを解決するには、アプリケーションが参照するプロジェクトまたはアセンブリを対象とするバージョンと互換性のある .NET バージョンをアプリケーションが対象にしていることを確認します。

プロジェクトを別のバージョンの .NET に再ターゲットする

アプリケーションの .NET のターゲット バージョンを変更した場合、Visual Studio は参照の一部を変更しますが、一部の参照を手動で更新する必要がある場合があります。 たとえば、前述のエラーのいずれかが発生するのは、アプリケーションを .NET Core 3.1 をターゲットに変更し、そのアプリケーションに .NET 6 に依存する参照、リソース、または設定がある場合です。

Visual Studio でのターゲット フレームワークの変更を示すスクリーンショット。

app.config の参照を更新する

.NET Framework アプリケーションのアプリケーション設定を回避するには、次の手順に従います。

  1. ソリューション エクスプローラーを開きます。
  2. [ すべてのファイルを表示] を選択し、Visual Studio の XML エディターで app.config ファイルを編集します。
  3. 適切なバージョンの .NET に合わせて、設定のバージョンを変更します。 たとえば、バージョン設定を 4.0.0.0 から 2.0.0.0 に変更できます。

同様に、リソースを追加したアプリケーションの場合は、次の手順に従います。

  1. ソリューション エクスプローラーを開きます。
  2. [ すべてのファイルを表示] を選択します
  3. [マイ プロジェクト (Visual Basic)] または [プロパティ (C#)] を展開し、Visual Studio の XML エディターで Resources.resx ファイルを編集します。
  4. バージョン設定を 4.0.0.0 から 2.0.0.0 に変更します。

リソースの更新

アプリケーションにアイコンやビットマップ、データ接続文字列などの設定などのリソースがある場合は、Project Designer[設定] ページのすべての項目を削除し、必要な設定を読み取ることでエラーを解決することもできます。

プロジェクトを別のバージョンの .NET に再ターゲットすると、参照は解決されません

プロジェクトを別のバージョンの .NET に再ターゲットすると、参照が正しく解決されない場合があります。 アセンブリへの明示的な完全修飾参照は、多くの場合、この問題を引き起こしますが、解決されない参照を削除してからプロジェクトに追加することで解決できます。 別の方法として、プロジェクト ファイルを編集して参照を置き換えることができます。 まず、次のフォームの参照を削除します。

<Reference Include="System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL" />

次に、それらを単純な形式に置き換えます。

<Reference Include="System.ServiceModel" />

注:

プロジェクトを閉じて再度開いた後は、すべての参照が正しく解決されるように、プロジェクトを再構築する必要もあります。

関連情報