EFコアツールを更新する必要があります


151

VS 2017 PackageManagerコンソールでdotnetefツールを使用すると、EFCoreツールを更新する必要があるという警告メッセージが表示されます。

PM> dotnet ef migrations list -s ../RideMonitorSite

The EF Core tools version '2.1.1-rtm-30846' is older than that of the runtime '2.1.2-rtm-30932'. Update the tools for the latest features and bug fixes.
20180831043252_Initial

しかし、私のcsprojファイルには次のエントリがあります。

  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.1.2" />
  </ItemGroup>

インストールされているバージョンが実際には古くなっていることを確認しました。

PM> dotnet ef --version
Entity Framework Core .NET Command-line Tools
2.1.1-rtm-30846

では、ツールを更新するにはどうすればよいですか?ところで、私は他の回答で、古いglobal.jsonファイルがこの問題を引き起こす可能性があることを見てきました。しかし、ソリューションのどこにもglobal.jsonファイルがありません。


DotNetCliToolReference、github.com
Antonio Campagnaro

提案をありがとう、@ AntonioCampagnaro。しかし、これらの参照を削除しても、警告メッセージが表示されます。
マークオルバート2018

回答:


312

特定のバージョンには、コマンドライン、Cmd、またはPowerShellを使用します。

dotnet tool update --global dotnet-ef --version 3.1.0

または最新バージョンの使用(再インストールでも機能します)

dotnet tool update --global dotnet-ef


2
バージョン3.0.0があり、最初のコマンドは機能しましたが、2番目のコマンドは機能しませんでした。バージョンを指定せずにコマンドを実行すると、次のエラーが発生しました。ツール 'dotnet-ef'は、次の理由で更新できませんでした:ツールパッケージを復元できませんでした...
Pippo46

76
なぜ彼らはこれを置くことができないINエラーメッセージ!
Simon_Weaver

1
我々は、おそらく... @Simon_Weaver 1日のPRをしなければならない
Riscie

13
一体、私はPRを作成しました:github.com/dotnet/efcore/pull/20792
Riscie

19

私はこの問題をgithubの開発チームにバウンスしました。これは、EFCoreを利用したAspNetCoreサイトを作成するときに読み込まれる現在のツールまたはnugetパッケージの既知の問題であることが判明しました。将来のリリースで修正される予定です。

今のところ、回避策は単に警告を無視することです。

別の回避策も提供されており、csprojファイルを微調整してAspNet Coreメタパッケージのバージョンを明示的に定義します(これを書いている時点では最大2.1.3です)が、そのアプローチを機能させることができませんでした。それでも警告メッセージが表示され続けました。


12

これを試してください: Install-Package Microsoft.EntityFrameworkCore.Tools

それでも問題が発生する場合は、次のコマンドも実行してください: Update-Package Microsoft.EntityFrameworkCore.Tools


3
これは良い提案ですが、私にとっては問題解決しませんでした。
バヌーナ

不足しているパッケージをインストールして、1世代の問題を解決しましたが、警告が表示され続けます。いずれにせよ良い提案。
dyslexicanaboko

12

私のために働いた解決策は、パッケージマネージャーコンソールで次のコマンドを実行することです。

PM> Install-Package Microsoft.EntityFrameworkCore -Version 2.1.11
PM> Install-Package Microsoft.EntityFrameworkCore.Tools -Version 2.1.11

私の場合、バージョンがエラーメッセージのバージョンと一致していることを確認してください。次のエラーが発生しました。

The EF Core tools version '2.1.1-rtm-30846' is older than that of the runtime '2.1.11-servicing-32099'. Update the tools for the latest features and bug fixes.

次のサイトから入手できるバージョンを確認してください:https//www.nuget.org/packages/Microsoft.EntityFrameworkCore/


3

私の解決策は、Microsofthttps //www.nuget.org/packages/dotnet-efからツールdotnet-efをインストールすることでした。同じコマンドを使用しますが、警告はありません。変更点は、dotnetefの代わりにdotnet-efを使用することです。

また、すでにdotnet-efがインストールされている場合は、dotnet tool update --global dotnet-ef --version n.n.n(更新するバージョンをnnn)を使用し ます


2

新しい.NETCore SDK v2.1.401バージョンをインストールし、> dotnet ef--versionをもう一度確認します。私も同じ問題を抱えていましたが、私の場合はうまくいきました。また、Microsoft.EntityFrameworkCore.Tools.DotNetを追加する必要はありません。


ありがとう、@ surbaniak。私はすでにそれをしました。これは現在のnugetパッケージの既知の問題であり、修正の対象となっていることがわかりました。回避策は、機能の損失がないため、問題を無視することです(意図的に、これを自分でチェックしていません)。
マークオルバート2018

この答えは私にも役立ちました。.NET Core SDK v2.1.403(ほぼ同じバージョン)をインストールしましたが、警告が表示されなくなりました。このような警告を回避するために、.NetコアSDKとランタイムの両方が更新されていること、バージョンが最新であることを確認する必要があります。URLはMicrosoftのWebサイトでも変更されていますが、私は次を使用しました:microsoft.com/net/download/dotnet-core/2.1
Tore Aurstad 2018年

.NET Core SKD v2.1.701(dotnet-sdk-2.1.701-win-x64.exe)をインストールしましたが、それでもエラーが発生します。
PateeGutee19年

2

この問題を解決するには、次のいずれかの方法に従うことができます。


  • テクニック1: パッケージマネージャーコンソールの使用(特にMicrosoft Visual Studioユーザーの場合)
    PM >Install-Package Microsoft.EntityFrameworkCore.Tools -Version 2.1.2

  • テクニック2:使用する.NET CLI
    >dotnet add package Microsoft.EntityFrameworkCore.Tools --version 2.1.2

  • テクニック3: パッケージリファレンスの使用

<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.1.2">
  <PrivateAssets>all</PrivateAssets>
  <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
  • テクニック4:パケットCLIの 使用
    >paket add Microsoft.EntityFrameworkCore.Tools --version 2.1.2

注意このバージョンを使用するには、NuGet3.6以降 が必要です。
参照リンク: https//www.nuget.org/packages/Microsoft.EntityFrameworkCore.Tools/2.1.2


1
  • 問題を無視する
  • <PackageReference Include = "Microsoft。EntityFrameworkCore。Tools" Version = "" />を更新しないでください。
  • 私の場合、「Update-Database -Context MyElementContext」を使用して進めましたが、すべて正常に機能しています。

これは、DinoEspositoの著書「ProgrammingASP.NETCore」で見つけました。

'注このバージョンのCLIツールは、アプリケーションが使用する.NETCoreランタイムのバージョンと同じではありません。ランタイムバージョンはプロジェクトファイルで指定されており、選択したIDEのユーザーインターフェイス内から快適に編集できます。代わりに、プロジェクトファイルを手動で編集する場合は、.csprojXMLファイルを編集してTargetFramework要素の値を変更するのと同じくらい簡単です。値は、バージョンを識別するモニカ(netcoreapp2.0など)を参照します。


0

パッケージを具体的に更新する方法が見つかりませんでしたが、パッケージマネージャーコンソールで「update-package」を実行しました。EFコアツールを含む、プロジェクトで参照されているすべてのパッケージを実行して更新しました。不要なパッケージが更新される可能性があるため、これは理想的ではない可能性があります。


ありがとう、@ malckier。update-packageを実行すると、いくつかのものが更新されました。しかし、警告メッセージはまだ表示されていました。
マークオルバート2018

0

このドキュメントの手順に従うと、問題の解決に役立ちました-https://docs.oracle.com/cd/E17952_01/connector-net-en/connector-net-entityframework-core-scaffold-example.html

VisualStudioのパッケージマネージャーコンソールを使用したデータベースのスキャフォールディング

  • Visual Studioを開き、C#用の新しいコンソールアプリ(.NET Core)を作成します。
  • パッケージマネージャーコンソールを使用して、EFCore用のMySQLNuGetパッケージを追加します。たとえば、次のコマンドを使用してMySql.Data.EntityFrameworkCorev8.0.13パッケージを追加します。

インストールパッケージMySql.Data.EntityFrameworkCore-バージョン8.0.13

重要

バージョン(たとえば、-Version 8.0.13)は、使用している実際のConnector / NETバージョンと一致する必要があります。現在のバージョン情報について。

  • [ツール]から[パッケージマネージャーコンソール]または[ソリューション用のNuGetパッケージの管理]を選択し、[NuGetパッケージマネージャー]メニューを選択して、次のNuGetパッケージをインストールします。

    Microsoft.EntityFrameworkCore.Design
    
    EF Core 1.1 only: Also add the MySql.Data.EntityFrameworkCore.Design package.
    
    Microsoft.EntityFrameworkCore.Tools version 1.1.6 (for EF Core 1.1) and Microsoft.EntityFrameworkCore.Tools version 2.0.3 (for EF Core 2.0)
    Note
    
    The .NET tools are included in the .NET Core 2.1 SDK and not required or supported for EF Core 2.1. If this is an upgrade, remove the reference to that package from the .csproj file (version 2.0.3 in this example) :
    
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.3" />
    

    パッケージマネージャーコンソールを開き、プロンプトで次のコマンドを入力して、エンティティとデータベースを作成DbContextsakilaます(接続文字列の値を、user =およびpassword =オプションの設定と一致するように調整します)。

Scaffold-DbContext "server = localhost; port = 3306; user = root; password = mypass; database = sakila" MySql.Data.EntityFrameworkCore -OutputDir sakila -f

Visual Studioは、プロジェクト内に新しいsakilaフォルダーを作成します。このフォルダーには、エンティティーにマップされたすべてのテーブルとsakilaContext.csファイルが含まれています。

オラクルの指示によると、EF Core 2.1にはMicrosoft.EntityFrameworkCore.Toolsは必要ないと書かれていましたが、EF2.2と互換性のあるバージョン2.2.0をインストールしました。


0

Martinのように特定のバージョンのコマンドライン、CmdまたはPowerShellを使用します。

dotnet tool update --global dotnet-ef --version 3.1.0

または最新バージョンの使用(再インストールでも機能します):

dotnetツールの更新--globaldotnet-ef

しかし、私のPCに問題があります:「バージョンを指定せずにコマンドを実行すると、次のエラーが発生しました:ツール 'dotnet-ef'は次の理由で更新できませんでした:ツールパッケージを復元できませんでした "Liko Pippo46

だから、私はこれらのステップを使用します:

dotnet tool uninstall --global dotnet-efしかし、同じ問題が発生したので、拡張子のディレクトリに移動します:C:\ Users \ Evan.dotnet \ tools.store \ dotnet-ef

そして私は古いバージョン(2.x)を見つけましたそして私の2番目の問題はファイルfileproject.assets.jsonが見つからなかったことでした

そこで、2.xバージョンのfileproject.assets.jsonを親リポジトリにコピーします

そして、すべてが完璧に行われました:

  1. dotnetツールのアンインストール--globaldotnet-ef

    2.xバージョンを削除します

  2. dotnet tool install --global dotnet-ef

    3.1をインストールします



0

アプリケーションでは、Dot.netコアライブラリのバージョンは2.1.2であり、Entity Framework core(2.1.1)の2.1.1で作業しています。したがって、dot.netコアバージョン(2.1.2)と同じである必要があるライブラリバージョンを更新します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.