web-dev-qa-db-ja.com

パッケージ「Microsoft.EntityFrameworkCore.Tools.DotNet」のバージョンを再解決できませんでした

新しい.NET Coreアプリケーションをサーバーに展開しています。プロジェクトは「コードファースト」メソッドを使用して作成されたため、EntityFramework移行を実行しようとしています。

実行するコマンドは

dotnet efデータベースの更新

移行は問題なくVisual Studioを使用してローカルで機能しますが、サーバー上でエラーが発生します。

パッケージのバージョンMicrosoft.EntityFrameworkCore.Tools.DotNet解決できませんでした。

DotNetの開発マシンのバージョンは1.0.0です。

サーバー上のDotNetのバージョンは1.0.1です。

私のプロジェクトは.csprojファイルを使用しています(project.jsonではなく、使用されなくなったようです)。

Csprojファイルへの参照を追加しましたが、バージョンに関係なく上記のエラーが表示されます。

  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.0" />
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.1" />
  </ItemGroup>

更新

基本的に、NUGETを使用してコマンドラインからMicrosoft.EntityFrameworkCore.Tools.DotNetをインストールしようとしました。

C:\ Program Files(x86)\ Jenkins\workspace\api.XXX.com\XXXProject> nuget i nstall Microsoft.EntityFrameworkCore.Tools.DotNet

次に、次のものを受け取ります。

警告:インストールに失敗しました。ロールバック... nugetアクションの実行に13.44秒かかりましたパッケージ 'Microsoft.EntityFrameworkCore.Tools.DotNet 1.0.0'には、プロジェクト 'C:\ Program Files(x86)\ Jenkins \でサポートされていないパッケージタイプ' D otnetCliTool 'がありますw orkspace\api.XXX.com\XXXProject'.`

次に、dotnet efコマンドを実行すると、次のようになります。

C:\ Program Files(x86)\ Jenkins\workspace\api.desully.com\deSullyAPI_Core> dotnet ef update database

パッケージのバージョンMicrosoft.EntityFrameworkCore.Tools.DotNetを再解決できませんでした。

アップデート#2

私の開発マシンには、サーバー上のバージョンとは異なるSDKバージョンが含まれていることに気付きました

開発ボックス enter image description here

プロダクションボックス enter image description here

問題は、1.0.1にMicrosoft.EntityFrameworkCore.Tools.DotNetが含まれていないことだと思いますか?古いバージョンがするのは奇妙ではありませんか?

アップデート3

So fyi-私は Microsoft Site に行って、SDK 1.0.0バージョンをダウンロードしようとしました(サーバーにインストールされていないようだったので)。残念ながら、MSサイトは強制的に1.0.1バージョンをフィードしているようです(これには必要なEFのものが含まれていません)。

1.0.0 dirを開発ボックスから本番サーバーにコピーしようとしましたが、それも機能していないようです。ここで何が欠けていますか?

14
footose

1.0.1Microsoft.EntityFrameworkCore.Tools.DotNetバージョンはありません(執筆時点)。パッケージを復元するには、Version="1.0.0"を設定する必要があります。

使用可能なバージョンは NuGetにリストされています です。

更新:

CLIツールを使用するには、最初に<DotNetCliToolReference>アイテムを追加する必要があります。

次に、プロジェクトのディレクトリでdotnet restoreを呼び出してパッケージをローカルキャッシュにダウンロードすると、ツールが使用可能になり、dotnet efを使用できます。

28
Martin Ullrich

私の場合(.NET Core 2.0.3)に役立つのは、発行することでした:

dotnet add package Microsoft.EntityFrameworkCore.Design

その後

dotnet restore

これにより、Microsoft.EntityFrameworkCore.Tools.DotNet正しいバージョン

4
MatBos