web-dev-qa-db-ja.com

Microsoft.EntityFrameworkCore.Installのバージョンの競合が検出されました

作業中の既存のプロジェクトにasp.netコアAPIを追加すると、次のエラーが発生します。

「Microsoft.EntityFrameworkCore.Install/reference Microsoft.EntityFrameworkCore 2.2.1のバージョンの競合がこの問題を解決するために直接プロジェクトに検出されました」

Nugetパッケージを追加しようとしましたが、複数の異なるパッケージ間でさらにバージョンの競合が発生し、プロセスは常に失敗します。最初はこれが自分のプロジェクトの問題かもしれないと思ったので、新しいソリューションをゼロから始め、いくつかの簡単な手順で問題を再現することができました。

  1. 新しいソリューションを作成する(EFDemo)
  2. EFDemo.BLというソリューションに新しい.net Coreクラスライブラリを追加します。
  3. 次のNugetパッケージをプロジェクトEFDemo.BLに追加します(新しいプロジェクトに既存のデータベースを使用しているため)。
  4. Microsoft.EntityFrameworkCore.SqlServer(v2.2.1)
  5. Microsoft.EntityFraneworkCore.Tools(v2.2.1)
  6. EFDemo.Apiという新しい.netコアWebアプリケーションを追加し、APIプロジェクトテンプレートを選択します。
  7. EFDemo.BLからEFDemo.Apiへの参照を追加します。
  8. ビルドして失敗を確認します。

次の投稿を確認しましたが、csprojファイルで "Microsoft.EntityFrameworkCore"への参照がないため、その解決策は機能しません。 NuGetパッケージのバージョンの競合が検出されました

また、.net SDKを再インストールし、100万回再起動しましたが、それでも問題が何であるか理解できません。

16
user1474992

最近同じエラーが発生しました。

これを整理するために私がしたこと:

インストールされた.Net Core 2.2 SDK

次に、私のプロジェクトですべての.csprojファイルを変更しました。

  <PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>

以前は:

      <PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>

これはすぐに役立ち、エラーは消えました。

10

これを理解しようとしながら多くの変更を加えたため、これに対する答えをカタログ化することは非常に困難です。結局、次の手順で問題が解決したと思います。

  • VSを最新バージョン(v15.9.3)にアップグレードする
  • .Net Core 2.1と2.2 SDKの両方をアンインストールします(私のプロジェクトは当時2.1を使用していました)
  • .Net Core 2.2 SDKをインストールする
  • ソリューションのすべてのプロジェクトを.Net Core 2.2を使用するように変換します(苦痛。RetargetAll関数があったらいいのに!)
  • 再起動、クリーン、ビルドして動作します。ふew。

次に、私のツールと戦う代わりに、いくつかの作業を行います。

8
user1474992

私にとって、それはこの記事を助けました、それは私が変更するのを忘れていた構成の非常に単純な変更でした:

<PropertyGroup>
  <TargetFramework>netcoreapp2.2</TargetFramework>
</PropertyGroup>

https://dotnetcoretutorials.com/2018/11/18/how-to-target-net-core-2-2/

4
Ulises Moreno

.NET Core 2.2をインストールし、TargetFrameworkタグをnetcoreapp2に変更するだけでこれを修正しました。

<PropertyGroup>
  <TargetFramework>netcoreapp2.2</TargetFramework>
</PropertyGroup>
3
user3645907

プロジェクトにインストールしたパッケージがわかりません。

しかし、今日のビジュアルスタジオは、asp.netコアアプリケーションに必要なすべてのパッケージを含む1つのnugetパッケージを追加しています。

このパッケージをインストールして、他のすべてのパッケージを削除してみて、うまくいくことを確認してください。

Microsoft.AspNetCore.All

これにより、少なくともMicrosoftパッケージ内でバージョンの競合が発生しなくなります。次に、問題の原因となっている、インストールした可能性のある他の外部パッケージを確認できます。

3
Krunal Parmar

私は自分の問題を解決するための手順に従っていた

  1. 最新のフレームワーク(私の場合はdotnet core 2.2)をダウンロードしてインストールします。
  2. プロジェクトのプロパティからプロジェクトのターゲットフレームワークを最高(私の場合はdotnet core 2.2)に設定します。
  3. クリーンなソリューション4ソリューションを再構築
  4. バージョンの紛争を更新する(オプション)
  5. 再構築して保存します。

お役に立てれば。

0
snnpro