Термин 'Update-Database' не распознается как имя командлета


114

Я использую EF5 beta1, и хотя раньше мне удавалось запускать «Update-Database». Теперь, когда я закрыл Visual Studio, я не могу запустить ее. Я получаю следующую ошибку:

Термин «Update-Database» не распознается как имя командлета, функции, файла сценария или работающей программы. Проверьте написание имени или, если был включен путь, проверьте правильность пути и повторите попытку. В строке: 1 символ: 16 + Update-Database <<<< -verbose + CategoryInfo: ObjectNotFound: (Update-Database: String) [], CommandNotFoundException + FullyQualifiedErrorId: CommandNotFoundException

Я попытался переустановить EF5b1, и хотя все прошло успешно (уже установлено), «Обновление базы данных» по-прежнему не работает.

Кто-нибудь может помочь ???


3
Вчера у меня была аналогичная проблема с другим командлетом, и
мне

11
Перезагрузка не требуется. Мы не запускаем скрипты init.ps1 после восстановления пакета (поэтому команда не найдена). Просто выйдите и перезапустите VS (или выгрузите / перезагрузите проект).
RickAndMSFT

1
Это случилось со мной сегодня. Я открыл репо для командного проекта, и ему нужно было восстановить некоторые пакеты. После восстановления команды update-databaseи add-migrationперестали работать. Это исправлено при перезапуске Visual Studio.
jmbertucci

Ответы:


169

В последнее время у меня была эта проблема несколько раз. Я обнаружил, что решение, которое сработало, заключалось в том, чтобы закрыть консоль диспетчера пакетов, закрыть Visual Studio, а затем снова открыть их. Перезагрузка также работала большую часть времени, но не всегда.


7
Обычно вам просто нужно выйти из перезапуска VS. См. Мои комментарии в исходном вопросе. В редких случаях может потребоваться дважды выйти / перезапустить VS.
RickAndMSFT

1
Просто столкнулся с проблемой и перезапустил Visual Studio, и все снова заработало. Спасибо.
Шубх

Спасибо, за действенное, если не сказать хреновое решение. Кажется, это все, что работает из миллиона вещей, которые я пробовал.
ПрофК

1
Ну конечно; естественно. Это решение. Законное решение. Спасибо, Microsoft!
Khateeb321,

2
Я установил "Microsoft.EntityFrameworkCore.Tools" Version = "3.1.0" в мои проекты данных и "Microsoft.EntityFrameworkCore.Design" Version = "3.1.0" в моем основном веб-проекте, что решило проблему для меня.
HaBo

51

Если вы используете Entity Framework:

Сообщение об ошибке: «Сообщение об ошибке (из команды Update-Database в PMC): термин« Update-Database »не распознается как имя командлета, функции, файла сценария или работающей программы. Проверьте правописание имени , или, если путь был включен, проверьте правильность пути и повторите попытку ".

Решение: «Закройте Visual Studio. Откройте проект и повторите попытку».

Для получения дополнительной информации посетите: Сценарии Advanced Entity Framework 6 для веб-приложения MVC 5 (12 из 12)

Надеюсь это поможет...


@AlbatrossCafe Sure :)
Мурат Йылдыз,

1
Команда разработчиков VS должна предоставить кнопку Обновить VS для таких проблем :)
Сохаиб javed

@sohaibjaved Для некоторых проблем перезапуска VS будет недостаточно, и требуется некоторая очистка каталогов, как указано в Visual Studio 2015, очень медленно . К вашему сведению ...
Мурат Йылдыз

Я потерял счет, сколько вещей решает перезапуск Visual Studio
EKanadily

21

Иногда, когда я загружаю VS, я вижу это в консоли диспетчера пакетов:

Значение не может быть нулевым.

Имя параметра: путь1

Я пока не знаю, что вызывает это, но кажется, что что-то идет не так во время запуска консоли Powershell, что прерывает регистрацию определенных модулей, таких как расширения EF powershell. Однако вы можете просто загрузить его вручную:

Import-Module .\packages\EntityFramework.6.1.1\tools\EntityFramework.psm1

Убедитесь, что вы заменили 6.1.1 любой вашей текущей версией Entity Framework.


4
Спасибо! Единственное решение, которое сработало для меня. Однако для всех, кто использует EF 6.1.3 с VS 2015, есть ошибка в EntityFramework.psm1, а патч доступен здесь stackoverflow.com/a/30062684/1267778 .
парламент

18

Переустановка пакета nuget устранила эту проблему для меня

т.е. выполнить

Install-Package EntityFramework -Version 5.0.0

в диспетчере пакетов


1
У меня это работает. В проекте, над которым я работал, использовался EF, и я автоматически предполагаю, что пакет был установлен. Оказалось, что это не так. Разработчик только что сослался непосредственно на EF dll. Для работы команды Update-Database в проекте должен быть установлен пакет EntityFramework.
stack247

Этот ответ вряд ли поможет, но он спас мне день. Спасибо,
Нельсон Миранда

Сегодняшняя борьба с FK с использованием Fluent API и т. Д., И почему-то EntityFramework продолжает падать. Что на самом деле сработало для меня в этом направлении, так это сделать еще один Update-Package -Reinstall EntityFramework.
Мэтт Борха

для меня переустановить и перезагрузить. просто переустановите, не работает, и просто перезагрузите, тоже не работает)
RMazitov

9

вы получите эту ошибку, если инструменты EF не установлены должным образом.

попробуйте следующую команду в диспетчере пакетов Nuget // Удаляет и устанавливает ту же версию EF

Update-Package "EntityFramework" -reinstall

Если вы все еще сталкиваетесь с той же проблемой. создайте новый веб-проект и выполните следующую команду в nuget.

(Примечание: нет необходимости создавать новый проект в том же решении или в том же месте.)

// Это обновит EF до последней версии (включая инструменты) // если вы хотите использовать определенную версию, используйте -versionфлаг.

Update-Package "EntityFramework"

Как только это будет сделано, отметьте свой исходный проект, и вы можете удалить вновь созданный проект.


Да!! Спасибо =) У меня были установлены только EntityFramwork, EF.Design, EF.SqlServer и EF.SqlServer.Design.
Janneman96



4

У меня была такая же проблема, и происхождение его было на моем имени пути, я был на моем пути имя каталога с прямыми скобками, например: C:\[PROJ]\TestApp.

Когда я снял скобки, C:\PROJ\TestAppвсе стало работать нормально ...


Обычно вам просто нужно выйти из перезапуска VS. См. Мои комментарии в исходном вопросе.
RickAndMSFT

@RickAndMSFT Это намного ближе к лучшему решению, которое "просто" перезапускает VS.
ПрофК

@Antonio Даже у меня была такая же проблема, и ваше решение тоже сработало для меня.
User5590


4

Для меня проблема была в версии Nuget .

  1. удалите диспетчер пакетов Nuget.
  2. перезапустите Visual Studio.
  3. установил новую версию Nuget Package Manager.
  4. затем снова запустите Visual Studio.

1
Это было для меня, но мне просто нужно было обновить nuget в расширениях и обновить
Oak

это сработало для меня, удалил диспетчер пакетов nuget, повторно установил диспетчер
пакетов nuget

3

Я решил удалить и переустановить «Microsoft.EntityFrameworkCore» и «Microsoft.EntityFrameworkCore.Tools»


1
Если вы используете EF Core, это правильный ответ. По крайней мере, проблема для меня заключалась в том, что Microsoft.EntityFrameworkCore.Toolsне установили.
Кирк Уолл

2

Эта проблема возникает, когда вы открываете проект прямо из проводника. Попробуйте сначала запустить VS, а затем открыть проект - у меня сработало. Я предполагаю, что речь идет о доступе к путям.


после нескольких перезапусков, которые не были решены, это помогло решить мою проблему!
Niklas


0

Если другие ответы не работают (VS 2017): очистите кеш NuGet, перезапустите VS, затем восстановите пакеты.


0

Я обнаружил, что это произошло из-за поврежденного пакета. Я установил Automapper, когда он уже был установлен. Было ясно только, что этот пакет поврежден, когда я попытался установить другой пакет.

Удаление поврежденного пакета решило эту проблему для меня.

Затем вы можете переустановить автомаппер. Проблема была с версией 5.4, теперь я счастлив на 6.0.


0

Для меня оказалось, что ядро ​​EntityFramework не было установлено в моем проекте (потому что я начал с пустого проекта). Таким образом, установка пакета EntityFramework решила проблему. Иногда, если установка EntityFramework не удалась, попробуйте установить отдельные пакеты один за другим.

Например

Microsoft.EntityFrameworkCore.Design
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.SqlServer.Design
Microsoft.EntityFrameworkCore.Tools

0

Решил обновлением консоли диспетчера пакетов.

Я не получал Update-Database в консоли диспетчера пакетов. Затем перезапускаю несколько раз. Также перезапустите Windows.

Затем я загружаю новый с nuget, и тогда это было решено.


0

У меня была эта проблема в Visual Studio 2015, и я решил ее, обновив версию Nuget.

Инструменты -> Расширения и обновления -> Обновления -> Галерея Visual Studio


0

Простым решением для меня было убедиться, что между обновлением и базой данных есть разрыв, например: update-databaseи использовать строчные буквы. Это может быть случайным совпадением, но когда я сделал это в консоли диспетчера пакетов, база данных действительно обновилась, и я получил сообщение о завершении, а не об not recognized as the name of a cmdlet, function, script fileошибке.


0

У меня возникла такая же проблема после того, как я случайно открыл решение Visual Studio с Visual Studio 2015 вместо 2017. Проект работал нормально до этой неудачи. Это был более старый проект с EF 5.0, а не с EF Core.

Я пробовал все, что предлагалось - бесчисленное количество раз перезапускал Visual Studio, очищал кеш NuGet, удалял все в папке пакетов, переустанавливал EF 5 для проекта - ничего хорошего, миграция добавления не распознавалась. Если я обновил EF до 6, он начал распознавать команды, но я пока не хотел обновляться. Итак, как только я вернулся к EF 5, проблема вернулась.

Единственное, что меня окончательно спасло, - это сделать следующее:

  • закрыть Visual Studio
  • удалить все из папки пакетов
  • удалите папку .vs в корне вашего решения. Эта папка обычно скрыта, вам нужно включить параметр Показать скрытые файлы и папки или установить флажок Скрытые элементы на вкладке просмотра папки
  • запустите Visual Studio и откройте свое решение. Он попросит восстановить пакеты NuGet, соглашайтесь.

Теперь команды EF, наконец, снова начали работать.


0

В моем случае:

  • Перезагрузить проект не помогло
  • Перезапуск VS не помог
  • Перезагрузка компьютера не помогла
  • Reinstal EF не помог

Но я нашел статью, в которой предлагалось вручную импортировать отсутствующий пакет EF с помощью PM Conole:

Import-Module .\packages\EntityFramework.X.X.X\tools\EntityFramework.psm1

И это решение решило мою проблему.


0

В моем случае перезапуск Visual Studio (много-много раз) не работал, а когда я искал где-то еще, я обнаружил сообщение на выходном терминале:

Текущий .NET SDK не поддерживает таргетинг на .NET Core 2.2. Либо целевой .NET Core 2.1 или ниже, либо используйте версию .NET SDK, поддерживающую .NET Core 2.2.

Итак, я установил требуемую версию .NET Core, и команда успешно выполнилась.


0

У меня была эта проблема в VS 2019 с существующим проектом с использованием EntityFramework 6.3.0. В этот проект в течение некоторого времени вносились некоторые странные изменения версии, и ничто не могло заставить его работать. Я считаю, что безуспешно пробовал все предложения, перечисленные здесь.

Наконец, обновление до версии предварительного релиза EntityFramework ( в настоящее время 6.4.0-preview3-19553-01) исправил проблему, выполнив это в консоли Package Manager: Update-Package EntityFramework -prerelease. Я надеюсь, что когда эта версия будет выпущена в ближайшие несколько недель, она будет работать правильно.



0

В моем случае я сделал следующее: - восстановил отсутствующие пакеты NuGet, нажав кнопку «Восстановить» в верхней части консоли диспетчера пакетов - перезапустил Visual Studio - запустить update-database


-1

Для меня проблема была в версии Nuget.

Я удалил и переустановил Nuget, затем перезапустил Visual Studio, и все заработало.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.