次の方法で共有


.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. My Project (Visual Basic) または Properties (C#) を展開し、Visual Studio の XML エディターで Resources.resx ファイルを編集します。
  4. バージョンの設定を 4.0.0.0 から 2.0.0.0 に変更します。

リソースの更新

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

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

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

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

次に、単純な形式に置き換えます。

<Reference Include="System.ServiceModel" />

Note

プロジェクトを閉じて再び開いてから、リビルドし、すべての参照が正しく解決されるようにする必要もあります。

関連情報