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.