新しい.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バージョンが含まれていることに気付きました
問題は、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を開発ボックスから本番サーバーにコピーしようとしましたが、それも機能していないようです。ここで何が欠けていますか?
1.0.1
のMicrosoft.EntityFrameworkCore.Tools.DotNet
バージョンはありません(執筆時点)。パッケージを復元するには、Version="1.0.0"
を設定する必要があります。
使用可能なバージョンは NuGetにリストされています です。
更新:
CLIツールを使用するには、最初に<DotNetCliToolReference>
アイテムを追加する必要があります。
次に、プロジェクトのディレクトリでdotnet restore
を呼び出してパッケージをローカルキャッシュにダウンロードすると、ツールが使用可能になり、dotnet ef
を使用できます。
私の場合(.NET Core 2.0.3)に役立つのは、発行することでした:
dotnet add package Microsoft.EntityFrameworkCore.Design
その後
dotnet restore
これにより、Microsoft.EntityFrameworkCore.Tools.DotNet
正しいバージョン