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ął.

Eduardo Brites
źródło
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.

Donal
źródło
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ął.

Eduardo Brites
źródło
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
Lijo
źródło
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.

Satchi
źródło
13

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

jackncoke
źródło
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.

Jean-David Lanz
źródło
10

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

Uzay
źródło
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.

mee
źródło
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.

biszkopt314
źródł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
ne1410s
źródło
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 * /

człowiek z żelaza
źródło
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!

pixparker
źródło
1

Enable-Migrations -EnableAutomaticMigrations

chandudab
źródło
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

depcka
źródło
1

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

Reyan Chougle
źródł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

snowblindzz
źródło
1

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

-> On the Package manager Console

Enable-migration
add-migration migrationName
update-database
jamaljaj
źródło
0

W VS 2013 spróbuj zainstalować UPDATE 1 (RC1), a problem zostanie rozwiązany.

Danilo Breda
źródło
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

L_7337
źródło
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.

Cameron Aavik
źródło
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>
KiriK
źródło
0

Sprawdź wersję Entity Framework.

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

Samith Kumar
źródło
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
CodingYourLife
źródło
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

M Fa
źródło
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.

Артем
źródło
-4

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

To może być przyczyną twojego problemu.

Renato Diniz
źródło