EF Core Error - проект не найден. Измените текущий рабочий каталог или используйте опцию --project

Я использую Visual Studio 2015 и ядро dotnet и пытаюсь разработать проект EF Core Code First с использованием Sqlite и этого руководства/документации, в котором также используется Sqlite => NET Core. - Новая база данных

Когда я пытаюсь добавить начальную миграцию из командной строки (я попал на компакт-диск в папку, в которой находится мой проект модели данных), введя следующую команду

dotnet ef migrations add InitialMigration

... я получаю следующую ошибку.

enter image description here

Проект не найден. Измените текущий рабочий каталог или используйте опцию --project.

Я даже пытался использовать опцию --project следующим образом.

> dotnet --project "C:\Shiva\EF\EFCFSqlite.Data.xproj"  ef migrations add InitialMigration

но это дает следующую ошибку.

Unknown option: --project
.NET Command Line Tools (1.0.0-preview2-003131)
Usage: dotnet [host-options] [command] [arguments] [common-options]

Я заметил, что документация использует файл .csproj, тогда как мой Проект показывает файл xproj. Также в документах упоминается что-то, что вы больше не используете project.json :(

Здесь мой файл project.json.

{
  "version": "1.0.0-*",

  "dependencies": {
    "Microsoft.EntityFrameworkCore.Sqlite": "1.1.1",
    "Microsoft.EntityFrameworkCore.Sqlite.Design": "1.1.1",
    "NETStandard.Library": "1.6.1"
  },
  "tools": {
    "Microsoft.EntityFrameworkCore.Tools.DotNet":"1.0.0"
  },
  "frameworks": {
    "netstandard1.6": {
      "imports": "dnxcore50"
    }
  }

Что изменилось? У нас нет выбора, кроме как установить Visual Studio 2017 и начать с нуля?? project.json и все эти другие вещи больше не соблюдаются?

Похоже, что для меня это серьезное изменение, если это так :(

Ответ 1

Вместо:

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

попробовать:

"tools": {
      "Microsoft.EntityFrameworkCore.Tools.DotNet": {
      "version": "1.0.0-preview3-final"
  }},

Ответ 2

иногда вам нужно изменить текущий каталог в консоли/терминале, например:

PM> cd E:\Projects\CrossTest\
PM> dotnet ef migrations add InitialMigration

и Совместите версии вашего пакета. Либо используйте пакеты preview1 или preview2. Сочетание тех не поддерживается.

Ответ 3

  1. Добавьте пакет nuget Microsoft.EntityFrameworkCore.Tools
  2. Добавьте пакет nuget Microsoft.EntityFrameworkCore.Design
  3. Щелкните правой кнопкой мыши файл проекта, выберите Edit, а затем добавьте следующее в ItemGroup, который содержит узлы PackageReference

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

(Вы можете найти последнюю версию, найдя ее в менеджере пакетов Nuget)

  1. Откройте консоль управления пакетами: Tools-> Пакет Nuget Manager-> Консоль диспетчера пакетов
  2. Введите cd {path where your csproj file resides} (это важно)
  3. Теперь введите dotnet ef migrations add InitialMigration

Ответ 4

Просто столкнулся с подобной проблемой. Исправлено с понижением до 1.0.0-preview3-final

"tools": {
     "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0-preview3-final",    
}

и изменение параметра -project для - startup-project

dotnet ef --startup-project <PATH_TO_PROJECT_DIRECTORY> migrations add <MIGRATION_NAME>

В global.json я также понизил версию до

 "sdk": {
     "version": "1.0.0-preview2-003131"
 }

Это может быть временным обходным путем перед переходом на csproj.

Ответ 5

Команда dotnet-ef перемещена.

Вам нужно будет добавить ссылку на Microsoft.EntityFrameworkCore.Tools.DotNet ИMicrosoft.EntityFrameworkCore.Design для ваших зависимостей в project.json, а затем добавьте Microsoft.EntityFrameworkCore.Tools.DotNet в раздел инструментов, и вам должно быть хорошо, чтобы идти.

Процитировано: http://errummwelluhh.blogspot.com

Ответ 6

Это просто означает, что

ВЫ НЕ В СОВРЕМЕННОЙ СПРАВОЧНИКЕ ПРОЕКТА

Я столкнулся с той же проблемой, когда создавал леса для существующей базы данных MySql, используя этот.

Команда, которую я выполнял:

dotnet ef dbcontext scaffold "Server=123.1.1.1;Uid=abc;Pwd=abc;Database=mcs_ssgc;Connection Timeout=20;Persist Security Info=False;Port=3306;Allow User Variables=True;Connect Timeout=120;" MySql.Data.EntityFrameworkCore -o Models

Вызывая ту же ошибку, я проверил текущий рабочий каталог в консоли диспетчера пакетов и обнаружил, что он неправильный.

В моем случае

enter image description here

Я имею в виду, что я не был в текущем каталоге проекта, после переключения каталога

cd SSGCApp

Теперь вы находитесь в каталоге проекта все хорошо, чтобы запустить команду.