Konsola Menedżera pakietów Enable-Migrations CommandNotFoundException tylko w określonym projekcie VS.


122

Próbowałem uruchomić polecenie „Enable-Migrations” w nowym projekcie i otrzymałem komunikat:

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

Ale we wszystkich innych projektach polecenie działa dobrze.

Dlaczego to się dzieje?

BTW, używam VS2010 Professional SP1

EDYCJA: Ponownie zainstalowałem za pomocą polecenia: Install-Package EntityFramework -IncludePrerelease i problem zniknął.


2
Cześć, dodaj swoje rozwiązanie jako odpowiedź i oznacz je jako zaakceptowane (co możesz zrobić 2 dni później), aby nie pojawiło się jako pytanie bez odpowiedzi.
— Gert Arnold

1
Mam dokładnie ten sam problem. Ale żadna z rzeczy w tym wątku nie wydaje się działać. Czy przeinstalowałeś całe studio Visual, czy po prostu uruchomiłeś to polecenie?
— ObedMarsh

Po prostu uruchomiłem polecenie ...
— Eduardo Brites,

2
Niestety, wyniki tego polecenia to po prostu „„ EntityFramework 6.1.0 ”już jest zainstalowany”. i nadal nie ma dodawania migracji ani włączania migracji jako prawidłowych poleceń.
— Mir

Otrzymuję pakiet instalacyjny: nie można znaleźć pakietu „EntityFramework”. kiedy spróbuję twojego rozwiązania
— Naguib Ihab

Odpowiedzi:


85

Po prostu ponowne uruchomienie Visual Studio zadziałało dla mnie. Nie ma potrzeby instalowania pakietów itp.


8
Ponowne uruchomienie VS również zadziałało, cieszę się, że wypróbowałem to przed próbą ponownego zainstalowania EntityFramework
— SM3RKY

5
Ponowne uruchomienie działało w przypadku programu Visual Studio 2015. Nie ma potrzeby instalowania pakietów.
— jonas

5
Uwaga - mam ten problem za każdym razem, gdy muszę instalować moje pakiety (jak świeże ściągnięcie repozytorium). Wygląda na to, że VS musi zostać ponownie uruchomiony, zanim PM zostanie poprawnie zainicjowany z nowymi pakietami (VS Community 2015 Update 1)
— Jono

2
Świeży repo pull również spowodował to dla mnie. Restart naprawił to. (VS Enterprise 2015 Update 2).
— Mike Rouse

84

Ponownie zainstalowałem za pomocą polecenia: Install-Package EntityFramework -IncludePrerelease i problem zniknął.


13
Zbudowałem swoje rozwiązanie, a następnie zamknąłem i ponownie otworzyłem VS 2013 i zadziałało
— Luke

Należy pamiętać, że EntityFrameworkobsługuje tylko .NET Framework 4.0 i 4.5. Więc jeśli używasz .NET Framework 4.6 lub nowszego, to nie działa.
— Tân

1
@ TânNguyễn - co to jest? mój EntityFramework 6.1.3 NuGet działa dobrze w moim projekcie
— 4.6.x

Restart nie zrobił tego za mnie, ale to zrobił.
— robbpriestley,

29

Ten problem występuje, ponieważ nie mamy zainstalowanej platformy Entity Framework. Zainstaluj Entity Framework za pomocą poniższego polecenia.

Install-Package EntityFramework -IncludePrerelease

Po zainstalowaniu wybierz projekt z listy rozwijanej domyślnego projektu konsoli menedżera pakietów.

Upewnij się, że przynajmniej jedna klasa w Twoim projekcie dziedziczy z kontekstu danych, w przeciwnym razie użyj poniższej klasy:

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

Jeśli tego nie zrobimy, pojawi się kolejny błąd:

No context type was found in the assembly

Po wykonaniu tych czynności możesz biec

enable-migrations

Pracował dla mnie. Dzięki.
— Najeeb

Pracował dla mnie dzisiaj z VS 2019.
— perezdr

17

Ponowne uruchomienie programu Visual Studio z uprawnieniami administratora rozwiązało problem.


13

Upewnij się, że korzystasz z programu Visual Studio jako administrator.


1
Używałem VS jako administrator. Wtedy nie wiedziałem, że musimy zainstalować pakiet w każdym projekcie.
— Eduardo Brites

12

Miałem ten sam problem z wersją zapoznawczą VS 2019, .Net Core i EntityFramework Core.

Okazuje się, że musiałem zainstalować za pośrednictwem NuGet Microsoft.EntityFrameworkCore.Toolsi Microsoft.EntityFrameworkCore.Design. Kiedy to było zrobione, działało jak urok.


10

Najpierw „Install-Package EntityFramework -IncludePrerelease”, a następnie ponowne uruchomienie programu Visual Studio jako administrator pracowało dla mnie razem.


3

W Visual Studio 2012 miałem ten sam błąd. Musiał odinstalować NuGet (narzędzia> rozszerzenia i aktualizacje> zainstalowane> wszystko: Menedżer pakietów NuGet: przycisk Odinstaluj). Następnie zamknął program Visual Studio. Następnie ponownie otwarto program Visual Studio i ponownie zainstalowano pakiet NuGet (narzędzia> rozszerzenia i aktualizacje> online> Galeria programu Visual Studio: Menedżer pakietów NuGet: przycisk Pobierz). Następnie w kolejnych oknach: kliknij przycisk Instaluj, a następnie przycisk zamykania. Następnie zamknij i ponownie otwórz program Visual Studio.


To zadziałało dla mnie, myślę, że jest to lepsza opcja niż wymuszanie aktualizacji do wersji wstępnej.
— OverMars

2

To, co naprawiło ten symptom dla mnie (VS2013), to odinstalowanie, a następnie ponowne zainstalowanie pakietu EF za pomocą narzędzia Nuget. Różnica w pliku csproj zmieniła to ...

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

...zaangażowany w to...

<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>

Nie do końca rozumiem dlaczego, ale przynajmniej zadziałało.


Miałem problemy z dodawaniem-migracją / aktualizacją-bazy danych itp. Wypróbowałem wiele rozwiązań, ale chociaż jestem pewien, że próbowałem już odinstalować i ponownie zainstalować EF, to nie działa. Aż do teraz, kiedy tak się stało. To nie pierwszy raz, kiedy mam problemy z pakietami EF. :(
— GeoffM

2

W .NET Core udało mi się osiągnąć to samo rozwiązanie, które opisano w zaakceptowanej odpowiedzi, wpisując w konsoli menedżera pakietów:

Install-Package EntityFramework.Core -Pre

2

Miałem ten sam problem i wypróbowałem większość rozwiązań dostarczonych przez innych ludzi, ale zadziałało w przypadku poniższych kroków. Mam VS 2017.

Kroki:

Install-Package EntityFramework -IncludePrerelease

następnie utwórz klasę jako

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

i na końcu wykonaj

Enable-Migrations -EnableAutomaticMigrations

Co mi się nie udało:

: Ponowne uruchamianie VS.

: tylko polecenie „Enable-Migrations”, które jest bez -EnableAutomaticMigrations.

: przywracanie lub aktualizowanie Menedżera pakietów Nuget.

Mój pierwotny błąd na początku to

/ * Termin „włączanie migracji” nie jest rozpoznawany jako nazwa polecenia cmdlet, funkcji, pliku skryptu ani programu działającego. Sprawdź pisownię nazwy lub, jeśli ścieżka została dołączona, sprawdź, czy ścieżka jest poprawna i spróbuj ponownie. W linii: 1 znak: 1 + włącz-migrację + ~~~~~~~~~~~~~~ ~~ + CategoryInfo: ObjectNotFound: (enable-migration: String) [], CommandNotFoundException * /


1

Miałem ten sam problem i stwierdziłem, że jest to spowodowane niektórymi znakami w ścieżce projektu, takimi jak [lub] Poprawiam ścieżkę projektu i działa dobrze!


1

Enable-Migrations -EnableAutomaticMigrations


1
Po wypróbowaniu kilku rozwiązań Twoje rozwiązanie działa dobrze dla mnie.
— nguyenhoai890

Pracował dla mnie w Visual Studio Community 2015. Dzięki (wszystkie inne rozwiązania zawiodły w moim przypadku)
— fedeteka

1

Ponieważ miałem już folder migracji, zrestartowałem Visual Studio i uruchomiłem Update-Database -verbose w konsoli menedżera pakietów. To zadziałało dla mnie


1

Wypróbowałem wszystkie powyższe sugestie, ale nic mi nie pomogło, potem zaktualizowałem Nuget Package Manageri zadziałało.


1
  1. Zainstaluj platformę Entity do bieżącego projektu przy użyciu poniższego polecenia: PM> Install-Package EntityFramework -IncludePrerelease

  2. Dodaj klasę „MyDBContext” w folderze Model, jak podano poniżej:

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

  3. Teraz włącz migracje dla bieżącego projektu za pomocą poniższego polecenia: PM> enable-migrations


1

uruchom jako administrator vs = >> otwórz Otwórz projekt

-> On the Package manager Console

Enable-migration
add-migration migrationName
update-database


0

Miałem wiele projektów w rozwiązaniu, ale miałem ustawiony prawidłowy projekt domyślny, więc pomyślałem, że powinien działać.

W końcu musiałem dodać -StartupProject MyProjectNameopcję do polecenia


0

Żadne z tych rozwiązań nie działało dla mnie. Moim rozwiązaniem było usunięcie packages/EntityFramework.6.1.3iRestore NuGet Packages

Zauważyłem, że packages/EntityFramework.6.1.3/tools/EntityFramework.psd1brakowało, więc to była prawdopodobna przyczyna. Jak to zostało usunięte w pierwszej kolejności, chociaż nie mam pojęcia.


0

Sprawdź, czy sekcja konfiguracji „entityFramework” istnieje i jest opisana w Twoim pliku .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

Sprawdź wersję Entity Framework.

jeśli jest to 6.3, obniż go do 6.2 i powinno działać dobrze


2
Proszę o rozwinięcie tego. Dlaczego ktoś miałby obniżyć zainstalowaną wersję biblioteki tylko po to, aby naprawić ten problem?
— andrensairr

0

Właśnie miałem ten sam problem w asp.net core VS2019

To rozwiązało problem:

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

Nie zapomnij ustawić domyślnego projektu w konsoli Menedżera pakietów na projekt bazy danych na wypadek, gdyby był inny.

Podczas wykonywania migracji domyślny projekt również wydaje się odgrywać rolę. W późniejszym kroku pomogło to zainstalować to w moim głównym projekcie startowym (nie w projekcie bazy danych EF):

Install-Package Microsoft.EntityFrameworkCore.Design

Nie sądzę, by istniało 8 lat temu .net core.
— Po

0

w przypadku tworzenia projektu sieci Web MVC Podczas tworzenia projektu należy wybrać opcję Uwierzytelnianie. domyślnie nie jest zaznaczone. wprowadź opis obrazu tutaj


0

downgrade do 6.2 pomógł mi.
.NET Framework w wersji 4.6.1
Projekt w starym formacie (inny niż .NET Standard)
Program Visual Studio powinien być otwarty z prawami administratora do początkowej migracji.
Wydaje mi się, że EF z wersją powyżej 6.2 wymaga najnowszego .NET Framework.


-4

Sprawdź, czy projekt jest otwarty w oknie Eksplorator rozwiązań.

To może być przyczyną twojego problemu.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.