Консоль диспетчера пакетов Enable-Migrations CommandNotFoundException только в конкретном проекте VS

122

Я попытался запустить команду Enable-Migrations в новом проекте и получил сообщение:

PM> Enable-Migrations
The term 'Enable-Migrations' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verif
y that the path is correct and try again.
At line:1 char:18
+ Enable-Migrations <<<< 
    + CategoryInfo          : ObjectNotFound: (Enable-Migrations:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

Но во всех других проектах команда работает нормально.

Почему это происходит?

Кстати, я использую VS2010 Professional SP1

РЕДАКТИРОВАТЬ: Я переустановил с помощью команды: Install-Package EntityFramework -IncludePrerelease, и проблема исчезла.

Эдуардо Бритес
источник
2
Привет, добавьте свое решение в качестве ответа и отметьте его как принятое (что можно сделать через 2 дня), чтобы оно не отображалось как вопрос без ответа.
Герт Арнольд
1
У меня точно такая же проблема. Но, похоже, ничего из этого не работает. Вы переустановили всю визуальную студию или просто выполнили эту команду?
ObedMarsh
Я просто выполнил команду ...
Эдуардо Бритес
2
К сожалению, результаты этой команды для меня просто «EntityFramework 6.1.0 уже установлен». и в нем по-прежнему нет допустимых команд add-migration или enable-migrations.
Мир
Я получаю Install-Package: Невозможно найти пакет EntityFramework. когда я попробую ваше решение
Нагиб Ихаб

Ответы:

85

Просто перезапустить Visual Studio сработало. Не нужно устанавливать пакеты и т. Д.

Донал
источник
8
Перезапуск VS также сработал для меня, рад, что я попробовал это, прежде чем пытаться восстановить EntityFramework
SM3RKY
5
Для Visual Studio 2015 перезагрузка прошла успешно. Пакеты устанавливать не нужно.
jonas
5
Примечание. Эта проблема возникает каждый раз, когда мне нужно установить свои пакеты (например, при обновлении репо). Похоже, VS необходимо перезапустить до того, как PM будет правильно инициализирован с новыми пакетами (VS Community 2015, обновление 1)
Джоно
2
Это также вызвало у меня приток свежего репо. Перезагрузка исправила. (VS Enterprise 2015, обновление 2).
Майк Роуз
84

Я переустановил с помощью команды: Install-Package EntityFramework -IncludePrerelease, и проблема исчезла.

Эдуардо Бритес
источник
13
Я построил свое решение, а затем закрыл и снова открыл VS 2013, и оно сработало
Люк
Обратите внимание, что EntityFrameworkподдерживает только .NET framework 4.0 и 4.5. Итак, если вы используете .NET framework 4.6 или выше, это не сработает.
Tân
1
@ TânNguyễn - что это? мой EntityFramework 6.1.3 NuGet работает нормально в моем проекте
4.6.x
Перезапуск не помог мне, но это сделал.
robbpriestley
29

Эта проблема возникает из-за того, что у нас не установлена ​​Entity Framework. Пожалуйста, установите Entity Framework, используя следующую команду.

Install-Package EntityFramework -IncludePrerelease

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

Убедитесь, что хотя бы один класс в вашем проекте наследуется от контекста данных, в противном случае используйте следующий класс:

public class MyDbContext : DbContext
    {
        public MyDbContext()
        {
        }
    }

Если мы этого не сделаем, мы получим еще одну ошибку:

No context type was found in the assembly

После выполнения этих действий вы можете запустить

enable-migrations
Lijo
источник
Работал у меня. Спасибо.
Najeeb
Работал у меня сегодня с VS 2019.
perezdr
17

Перезапуск Visual Studio с правами администратора решил проблему для меня.

Satchi
источник
13

Убедитесь, что вы используете Visual Studio от имени администратора.

jackncoke
источник
1
Я запускал VS как администратор. В то время я не знал, что нам нужно устанавливать пакет для каждого проекта.
Эдуардо Бритес
12

У меня была такая же проблема с VS 2019 Preview, .Net Core и EntityFramework Core.

Оказывается, мне пришлось установить через NuGet Microsoft.EntityFrameworkCore.Toolsи Microsoft.EntityFrameworkCore.Design. Как только это было сделано, это сработало как шарм.

Жан-Давид Ланц
источник
10

Сначала у меня работали «Install-Package EntityFramework -IncludePrerelease», а затем перезапуск Visual Studio в качестве администратора .

Uzay
источник
3

В Visual Studio 2012 у меня была такая же ошибка. Пришлось удалить NuGet (Инструменты> Расширения и обновления> Установлено> Все: Диспетчер пакетов NuGet: кнопка «Удалить»). Затем закрыл Visual Studio. Затем повторно открыли Visual Studio и переустановили NuGet (Инструменты> Расширения и обновления> Онлайн> Галерея Visual Studio: Диспетчер пакетов NuGet: кнопка «Загрузить»). Затем в следующих окнах: нажмите кнопку «Установить», затем нажмите кнопку «Закрыть». Затем закройте и снова откройте Visual Studio.

мии
источник
Это сработало для меня, я думаю, что это лучший вариант, чем принудительное обновление до предварительной версии.
OverMars
2

Что устранило этот симптом для меня (VS2013), так это удаление и переустановка пакета EF с помощью Nuget. Разница в файле csproj изменила это ...

<Reference Include="EntityFramework">
  <HintPath>..\packages\EntityFramework.6.1.1\lib\net45\EntityFramework.dll</HintPath>
</Reference>

... в это ...

<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\packages\EntityFramework.6.1.1\lib\net45\EntityFramework.dll</HintPath>
</Reference>

Я пока не совсем понимаю почему, но, по крайней мере, это сработало.

biscuit314
источник
У меня были проблемы с добавлением-миграцией / обновлением-базой данных и т. Д. Я перепробовал все решения, но, хотя я уверен, что уже пытался удалить и переустановить EF, это не сработало. До сих пор, когда это было. Это не первый раз, когда у меня возникают проблемы с пакетами EF. :(
GeoffM
2

В .NET Core я смог достичь того же разрешения, что и в принятом ответе, введя в консоль диспетчера пакетов следующее:

Install-Package EntityFramework.Core -Pre
ne1410s
источник
2

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

шаги:

Install-Package EntityFramework -IncludePrerelease

затем создайте класс как

public class MyDBContext : DbContext { public MyDBContext() { } }

и в последний раз выполнить

Enable-Migrations -EnableAutomaticMigrations

Что у меня не сработало:

: Перезапуск VS.

: только команда "Enable-Migrations" без -EnableAutomaticMigrations.

: восстановление или обновление диспетчера пакетов Nuget.

Моя первоначальная ошибка в начале была

/ * Термин 'enable-migration' не распознается как имя командлета, функции, файла сценария или работающей программы. Проверьте написание имени или, если был указан путь, убедитесь, что путь правильный, и повторите попытку. В строке: 1 символ: 1 + enable-migration + ~~~~~~~~~~~~~~ ~~ + CategoryInfo: ObjectNotFound: (enable-migration: String) [], CommandNotFoundException * /

Железный человек
источник
1

У меня была такая же проблема, и я обнаружил, что это из-за некоторых символов в пути проекта, таких как [или], я исправляю путь к проекту, и он работает нормально!

pixparker
источник
1

Enable-Migrations -EnableAutomaticMigrations

chandudab
источник
1
После того, как я попробовал несколько решений, ваше решение мне понравилось.
nguyenhoai890
Работал для меня в Visual Studio Community 2015. Спасибо (все остальные решения в моем случае не удались)
fedeteka
1

Поскольку у меня уже была папка миграции, я перезапустил Visual Studio и запустил Update-Database -verbose в консоли диспетчера пакетов. Это сработало для меня

depcka
источник
1

Я попробовал все вышеперечисленные предложения, но у меня ничего не получилось, я обновился, Nuget Package Managerи это сработало

Рейан Чугл
источник
1
  1. Установите Entity framework в текущий проект с помощью следующей команды: PM> Install-Package EntityFramework -IncludePrerelease

  2. Добавьте класс MyDBContext в папку Model, как показано ниже:

    открытый класс MyDBContext: DbContext {public MyDBContext () {}}

  3. Теперь включите миграции для текущего проекта с помощью следующей команды: PM> enable-migrations

snowblindzz
источник
1

запустить от имени администратора vs = >> открыть Открыть проект

-> On the Package manager Console

Enable-migration
add-migration migrationName
update-database
jamaljaj
источник
0

В VS 2013 попробуйте установить UPDATE 1 (RC1), и проблема будет решена.

Данило Бреда
источник
0

У меня было несколько проектов в решении, но у меня был правильный набор проектов по умолчанию, поэтому я подумал, что он должен работать.

В конце концов, мне пришлось добавить -StartupProject MyProjectNameопцию в команду

L_7337
источник
0

Ни одно из этих решений не помогло мне. Моим решением было удалить packages/EntityFramework.6.1.3иRestore NuGet Packages

Я заметил, что этого не packages/EntityFramework.6.1.3/tools/EntityFramework.psd1было, так что это была вероятная причина. Как его вообще удалили, хотя я понятия не имею.

Кэмерон Аавик
источник
0

Убедитесь, что раздел конфигурации entityFramework существует и описан в вашем файле .config.

<configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/></configSections>

        <entityFramework>
            <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"/>
            <providers>
                <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/>
            </providers>
        </entityFramework>
Кирик
источник
0

Проверьте версию Entity Framework.

если это 6.3, понизьте его до 6.2, и он должен работать нормально

Самит Кумар
источник
2
Пожалуйста, поясните это подробнее. Почему кто-то должен понижать версию установленной библиотеки только для того, чтобы решить эту проблему?
andrensairr
0

У меня была такая же проблема в asp.net core VS2019

Это решило это:

Install-Package Microsoft.EntityFrameworkCoreInstall-Package
Install-Package Microsoft.EntityFrameworkCore.Tools

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

При выполнении миграции проект по умолчанию также играет роль. На более позднем этапе это помогло установить это в мой основной запускаемый проект (а не в проект базы данных EF):

Install-Package Microsoft.EntityFrameworkCore.Design
CodingYourLife
источник
Я не думаю, что 8 лет назад ядро ​​.net существовало.
После
0

если вы создаете веб-проект MVC, вы должны выбрать «Аутентификация» при создании проекта. по умолчанию не выбран. введите описание изображения здесь

M Fa
источник
0

даунгрейд до 6.2 мне помог.
.NET Framework версии 4.6.1.
Проект в старом формате (кроме .NET Standard)
Visual Studio должен быть открыт с правами администратора для начальной миграции.
Я предполагаю, что EF с версией выше 6.2 требует последней версии .NET Framework.

Артем
источник
-4

Проверьте, открыт ли проект в окне обозревателя решений.

Это могло быть причиной вашей проблемы.

Ренато Диниз
источник