web-dev-qa-db-ja.com

コマンド「dotnet-ef」に一致する実行可能ファイルが見つかりませんでした

Microsoft.EntityFramework.CoreとSQLiteでASP.Net Core RC2を使用してプロジェクトのサンプルを作成しています。

私はこのチュートリアルに従っています: https://damienbod.com/2015/08/30/asp-net-5-with-sqlite-and-entity-framework-7/

しかし、このコマンドを実行すると:

dotnet ef migrations add FirstMigration

私はこのエラーを受け取りました:

No executable found matching command "dotnet-ef"

ここに私のproject.json設定があります:

{
  "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.0.0-rc2-3002702",
      "type": "platform"
    },
    "Microsoft.AspNetCore.Mvc": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0-rc2-final",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0-rc2-final",
    "Microsoft.Extensions.Configuration.FileExtensions": "1.0.0-rc2-final",
    "Microsoft.Extensions.Configuration.Json": "1.0.0-rc2-final",
    "Microsoft.Extensions.Logging": "1.0.0-rc2-final",
    "Microsoft.Extensions.Logging.Console": "1.0.0-rc2-final",
    "Microsoft.Extensions.Logging.Debug": "1.0.0-rc2-final",
    "Microsoft.EntityFrameworkCore": "1.0.0-rc2-final",
    "Microsoft.EntityFrameworkCore.Sqlite": "1.0.0-rc2-final"
  },

  "tools": {
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": {
      "version": "1.0.0-preview1-final",
      "imports": "portable-net45+win8+dnxcore50"
    }
  },

  "frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "dotnet5.6",
        "dnxcore50",
        "portable-net45+win8"
      ]
    }
  },

  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },

  "runtimeOptions": {
    "gcServer": true
  },

  "publishOptions": {
    "include": [
      "wwwroot",
      "Views",
      "appsettings.json",
      "web.config"
    ]
  },

  "scripts": {
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  }
}
78
Redplane

Entity Framework Core 1.0

Project.jsonファイルのtoolsセクションを更新して、これを含める必要があります。

"Microsoft.EntityFrameworkCore.Tools": {
  "version": "1.0.0-preview1-final",
  "imports": [
    "portable-net45+win8+dnxcore50",
    "portable-net45+win8"
  ]
}

これにより、dotnet efコマンドが使用可能になります。

重要

また、dotnet efコマンドは、project.jsonファイルを含む同じディレクトリから実行する場合にのみ使用できることに注意してください。

Entity Framework Core 1.1
Entity Framework Core 1.1へのアップグレード後に再びこの問題が発生する場合は、Microsoft.EntityFrameworkCore.Tools依存関係をMicrosoft.EntityFrameworkCore.Tools.DotNetバージョン1.1.0-preview4に置き換えてください。 importsセクションを保持する必要もありません。この詳細については、 Entity Framework Core 1.1リリース発表ブログ投稿 の下の「1.1へのアップグレード」の見出しを参照してください。

60
Daniel Grim

Entity Framework Core 1.1

Project.jsonファイルなしで新しい.csprojプロジェクトでVS2017を使用している場合は、これに追加します

.csprojファイルを編集する必要があります(ソリューションエクスプローラーで右クリックし、whatever.csprojの編集をクリックします)。次に、これを

<ItemGroup>
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet">
      <Version>1.0.0-*</Version>
    </DotNetCliToolReference>
  </ItemGroup>

礼儀: https://github.com/aspnet/EntityFramework/issues/7358#issuecomment-278379967

56
mwoa

VS2017 15.3以降およびASP.NET CORE 2.0以降に固有...

コマンドラインまたはnugetパッケージマネージャーを使用して、dbプロバイダーのnugetをインストールします。

dotnet add package Microsoft.EntityFrameworkCore.SqlServer

.csprojに次のセクションを追加します

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

VS2017でコマンドラインまたはNuget Managerを使用して設計時ツールをインストールします。

dotnet add package Microsoft.EntityFrameworkCore.Design

これにより、プロジェクトディレクトリのコマンドラインでdotnet ef *が有効になります。

プロジェクトディレクトリのコマンドラインでdotnet ef *コマンドを有効にします。

dotnet ef migrations add Initial
dotnet ef database update Initial
dotnet ef dbcontext scaffold 
38
Joe Healy

これは、.NET Core 1.0から.NET Core 1.1+または2.xに切り替える際の一般的な問題です。

それを修正するには、以下を行う必要があります。

  • NuGetを使用して、Microsoft.EntityFrameworkCore.ToolsおよびMicrosoft.EntityFrameworkCore.Tools.DotNetパッケージライブラリを取得します。
  • project.json(.NET Core 1.0の場合)または<projectName>.csproj(.NET Core 1.1+および2.xの場合)プロジェクト構成ファイル内に、このパッケージへの参照を手動で追加します。

具体的には、.NET Core 1.0プロジェクトの場合、これを追加します。

"tools": {
   "Microsoft.EntityFrameworkCore.Tools": "1.0.0"
   "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0"
 }

.NET Core 1.1+および.NET Core 2.xプロジェクトの場合、これを追加します。

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

tools jsonキーまたは1つ以上の既存のDotNetCliToolReference要素を持つ<ItemGroup>要素が既にある場合は、新しい要素を既存のグループに追加するだけです。

重要:上記の手順を実行する以外に、プロジェクトルートフォルダー(プロジェクトファイルを含むフォルダー)内でdotnet efコマンドを起動する必要があります。そうしないと機能しません。 。

追加情報と問題の詳細な説明については、 私のブログ投稿 をご覧ください。

31
Darkseal

問題の正確な解決策を見つけたと思います-dotnet:コマンド「dotnet-ef」に一致する実行可能ファイルが見つかりません「..

私はVS 2017 versio 15.5.3でドットネットコア2.0を使用しています

このエラーの原因

このエラーは、Nugetを見つけることができないためソリューションファイルの場所。

解決策:-「Startup.cs」クラスがあるディレクトリに移動します

  1. rootに移動しましたcommandPackage Manager Console

    cd。\ School1

ここで、「School1」はプロジェクトの私のルートディレクトリであり、「Startup.cs」クラスが含まれています。これはあなたの場合は異なります。

  1. 次に、コマンドdotnet efPackage Manager Consoleで実行します。これは正常に実行されます。

明確な理解のための写真の例

  1. dotnet efの実行中にエラーErrorが発生しました。 enter image description here

  2. コマンドcd .\School1でルートフォルダーに移動してエラーを修正しました

仲間のDot Net開発者に役立つことを願っています。

enter image description here

17
yogihosting

Microsoft.EntityFrameworkCore.Tools .DotNetを追加する必要がありました。 project.jsonファイルのツールセクションは次のようになります。

"tools": {
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.1.0-preview4-final",
    "Microsoft.AspNetCore.Razor.Tools": "1.1.0-preview4-final",
    "Microsoft.EntityFrameworkCore.Tools":"1.1.0-preview4-final",
    "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4-final"
},
12

この問題が発生し、CLIツールでasp.netコアを実行した場合、xx.csprojファイルに<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />dotnet restoreを追加することで解決できます。その後、dotnet efコマンドを使用できます。

4
Dauphin

VS Package Managerコンソールタイプで別のコンソールウィンドウを開く代わりに、次のコマンドを実行します。

移行を追加

Add-Migration <migration name>

最後の移行を削除

Remove-Migration

移行が適用される前(または移行を適用するため):

Update-Database

移行が適用された場合:

Update-Database -Migration <previous migration> -Context <db context name>

HTH

EDIT:MVCコアプロジェクトに次のクラスも必要になる場合があります。

public class DbContextFactory : IDesignTimeDbContextFactory<NotesContext>
{
    public YourDbContext CreateDbContext(string[] args)
    {
        var builder = new DbContextOptionsBuilder<YourDbContext>();
        builder.UseSqlServer("DefaultConnection", optionsBuilder => optionsBuilder.MigrationsAssembly(typeof(YourDbContext).GetTypeInfo().Assembly.GetName().Name));
        return new YourDbContext(builder.Options);
    }
}
1

デフォルトでは、NuGet Pkgを追加するときにPackageReferenceとして追加されますが、これは間違っているため、手動で編集します

1- .csprojファイルの編集

2-「PackageReference」からの変更:

<ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.1.1"/>
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.3"/>
</ItemGroup>
to:
<ItemGroup>
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.1.1"/>
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.3"/>
</ItemGroup>
0
Luis

別のクラスライブラリプロジェクトを使用していました。パッケージマネージャーコンソールで上記のすべてを試して失敗した後。コマンドプロンプトを使用しましたが、うまくいきました!奇妙な。ただし、クレジットは この記事 になります。また、別のクラスライブラリプロジェクトを使用している場合は、 This がソリューションです。

0
Mohsin

Visual Studio 2017では、パッケージマネージャーコンソールからこれらのコマンドを実行する必要がありました

install-package Microsoft.EntityFrameworkCore.SqlServer.Design

Scaffold-DbContext "Server=.\sqlexpress;Database=MyDb;Trusted_Connection=True;MultipleActiveResultSets=true" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Model -Context "MyApp"
0
Kyriacos

ツールセクションで以下のコードを追加し、

 "tools": {

    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
    "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0-preview2-final",

    "Microsoft.AspNetCore.Server.IISIntegration.Tools": {

      "version": "1.0.0-preview2-final",
      "imports": "portable-net45+win8+dnxcore50"
    }
  }

この形式のコードでエラーが解決しました。

0
T-Jayanth Dore