2016-12-02 4 views
2

Я пытаюсь научиться основам ASP.NET Ядра с помощью this tutorial:"Нет исполняемым найдено соответствие команды "Dotnet-эфф""

  1. Я создал веб-приложение ASP.NET Core,
  2. I модернизировал его, используя команду из here

Сейчас я пытаюсь настроить перенос базы данных с помощью dotnet ef migrations add Initial из командной строки в папке проекта (где project.json находится):

No executable found matching command "dotnet-ef"

Я изменил project.json, так что DotNet-эф работы:

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

Теперь поколение не может со следующей ошибкой:

The specified framework 'Microsoft.NETCore.App', version '1.0.0-rc2-3002702' was not found. - Check application dependencies and target a framework version installed at: C:\Program Files\dotnet\shared\Microsoft.NETCore.App - The following versions are installed: 1.0.0 1.0.1 1.1.0 - Alternatively, install the framework version '1.0.0-rc2-3002702'

Ok, это имеет смысл, потому что Microsoft.EntityFrameworkCore.Tools 1.0.0-preview1-final полагается на старую версию, упомянутую в ошибке, как она найдена в файле project.lock.json.

Я не хочу принизить, поэтому я ставлю последнюю версию Microsoft.EntityFrameworkCore.Tools я смог найти:

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

Делая это приведет к той же ошибки:

No executable found matching command "dotnet-ef"

Как я могу заставить его работать в версии 1.1?

Другая информация контекст, который может быть полезен:

ОС: Windows 7 x64 VS: 2015 Community Edition Другие части из project.json:

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

"runtimes": { 
"win7-x64": {} 
}, 
+0

Возможный дубликат [# 37276882] (https://stackoverflow.com/a/45765523/1233379): короче говоря, вам необходимо вручную изменить конфигурацию проекта файл и добавьте ссылку на пакеты Tools/Tools.DotNet (поскольку VS2015/VS2017 не будет делать это автоматически). Для получения дополнительной информации [читайте здесь] (http://www.ryadel.com/ru/no-executable-found-matching-command-dotnet-ef-error-in-visual-studio-2017-and-net-core -2-vs2017-сущность-рамка /). – Darkseal

ответ

6

UPDATE [30/3/2017]

Новый пакет

Install-Package Microsoft.EntityFrameworkCore.Tools 

ORIGINAL

Попробуйте добавить

"tools": { 
    "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4" 
    } 

Кроме того здесь учебник по настройке .Net Ядро 1.1.0 с EF Ядра 1.1.0

https://docs.microsoft.com/en-us/ef/core/get-started/netcore/new-db-sqlite

+0

Это сработало. Мне также не хватало '' Microsoft.EntityFrameworkCore.Tools ": {" version ":" 1.1.0-preview4-final "' – Alexei

+0

это не сработало, попробовал также редактировать файл csproj – Salim

1

Grierson «s ответ хорошо, но в будущем я буду включать весь процесс, пока я не сделал его работу:

1) Tools.DotNet уже предложили в принятом ответе

"tools": { 
    "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4" 
    } 

Ран ту же команду и получил:

Cannot execute this command because Microsoft.EntityFrameworkCore.Design is not installed. Install the version of that package that matches the installed version of Microsoft.EntityFrameworkCore and try again.

2) Добавлена ​​

//EF Core 
"Microsoft.EntityFrameworkCore.Tools": { 
    "version": "1.1.0-preview4-final", 
    "type": "build" 
} 

3) Теперь, ошибка:

No parameterless constructor was found on 'ApplicationDbContext'. Either add a parameterless constructor to 'Application DbContext' or add an implementation of 'IDbContextFactory' in the same assembly as 'ApplicationDbC ontext'.

Я выбрал для реализации интерфейса. Один из возможных способов:

public ApplicationDbContext Create(DbContextFactoryOptions options) 
{ 
    var builder = new DbContextOptionsBuilder<ApplicationDbContext>(); 
    builder.UseSqlServer("Server=(localdb)\\mssqllocaldb;Database=Movies;Trusted_Connection=True;MultipleActiveResultSets=true"); 
    return new ApplicationDbContext(builder.Options); 
} 

Та же ошибка возникает при запуске dotnet ef migrations add Initial

4) Я добавил конструктор по умолчанию для класса ApplicationDbContext

Теперь я могу добавить миграцию.

0

У меня была та же проблема.

, который разрешен для меня

"tools": { 
"Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final", 
"Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4-final" 
},