패키지 관리자 콘솔 활성화-마이그레이션 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

그러나 다른 모든 프로젝트에서는 명령이 잘 실행됩니다.

왜 이런 일이 발생합니까?

BTW, VS2010 Professional SP1을 사용하고 있습니다.

편집 : commmand : Install-Package EntityFramework -IncludePrerelease로 다시 설치했는데 문제가 사라졌습니다.


2
안녕하세요, 답변으로 솔루션을 추가하고 수락 된 것으로 표시하세요 (2 일 후에 수행 가능). 그러면 답변되지 않은 질문으로 표시되지 않습니다.
— Gert Arnold

1
이 똑같은 문제가 있습니다. 그러나이 스레드의 어떤 것도 작동하지 않는 것 같습니다. 전체 Visual Studio를 다시 설치 했습니까? 아니면 단순히 해당 명령을 실행 했습니까?
— ObedMarsh 2014

나는 단순히 명령을 실행했다 ...
— Eduardo Brites 2014

2
슬프게도이 명령의 결과는 " 'EntityFramework 6.1.0'이 이미 설치되어 있습니다." 그리고 여전히 유효한 명령으로 추가 마이그레이션 또는 마이그레이션 활성화가 없습니다.
— 미르

Install-Package : 'EntityFramework'패키지를 찾을 수 없습니다. 난 당신의 솔루션을하려고 할 때
— 기브 이하 브

답변:


85

Visual Studio를 다시 시작하는 것만으로도 효과적이었습니다. 패키지 등을 설치할 필요가 없습니다.


8
다시 시작 VS 또한 나를 위해 일, 기쁜 나는 EntityFramework reinstal하기 전에이 시도
— SM3RKY

5
Visual Studio 2015에서 다시 시작되었습니다. 패키지를 설치할 필요가 없습니다.
— 조나스

5
참고-패키지를 설치해야 할 때마다이 문제가 발생합니다 (예 : 새로운 repo pull). PM이 새 패키지로 올바르게 초기화되기 전에 VS를 다시 시작해야하는 것 같습니다 (VS Community 2015 업데이트 1)
— Jono

2
신선한 repo pull도이 문제를 일으켰습니다. 다시 시작하여 수정했습니다. (VS Enterprise 2015 업데이트 2).
— Mike Rouse 2016 년

84

commmand : Install-Package EntityFramework -IncludePrerelease로 다시 설치했는데 문제가 사라졌습니다.


13
내 솔루션을 구축 한 다음 VS 2013을 닫았다가 다시 열었습니다. 작동했습니다.
— Luke

참고는 EntityFramework단지 .NET 프레임 워크 4.0 및 4.5을 지원합니다. 따라서 .net framework 4.6 이상을 사용하는 경우 작동하지 않습니다.
— Tân

1
@ TânNguyễn-그게 뭔데? 내 EntityFramework 6.1.3 NuGet이 내 4.6.x 프로젝트에서 잘 작동합니다
— bkwdesign 2017 년

다시 시작은 나를 위해하지 않았지만 이것은했습니다.
— 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

나를 위해 일했습니다. 감사.
— Najeeb 2017

VS 2019 오늘 나를 위해 일한
— perezdr

17

관리자 권한으로 Visual Studio를 다시 시작 하면 문제가 해결되었습니다.


13

Visual Studio를 관리자로 실행하고 있는지 확인하십시오.


1
관리자로 VS를 실행했습니다. 당시에는 각 프로젝트에 패키지를 설치해야한다는 사실을 몰랐습니다.
— Eduardo Brites 2013

12

VS 2019 Preview, .Net Core 및 EntityFramework Core에서 동일한 문제가 발생했습니다.

NuGet Microsoft.EntityFrameworkCore.Tools및 Microsoft.EntityFrameworkCore.Design. 일단 그것이 끝나면 그것은 매력처럼 작동했습니다.


10

먼저 "Install-Package EntityFramework -IncludePrerelease"를 시작한 다음 Visual Studio를 관리자 로 다시 시작하면 함께 작업했습니다.


3

Visual Studio 2012에서 동일한 오류가 발생했습니다. NuGet을 제거해야했습니다 (도구> 확장 및 업데이트> 설치됨> 모두 : NuGet 패키지 관리자 : 제거 단추). 그런 다음 Visual Studio를 닫았습니다. 그런 다음 Visual Studio를 다시 열고 NuGet을 다시 설치했습니다 (도구> 확장 및 업데이트> 온라인> Visual Studio 갤러리 : NuGet 패키지 관리자 : 다운로드 단추). 그런 다음 다음 창에서 : 설치 버튼을 클릭 한 다음 닫기 버튼을 클릭합니다. 그런 다음 Visual Studio를 닫았다가 다시 엽니 다.


이것은 나를 위해 일했습니다. 시험판으로 업그레이드하는 것보다 더 나은 옵션이라고 생각합니다.
— OverMars 2014

2

나를 위해이 증상을 수정 한 것은 (VS2013) Nuget으로 EF 패키지를 제거한 다음 다시 설치하는 것입니다. 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>

나는 아직 그 이유를 완전히 이해하지 못했지만 적어도 효과가있었습니다.


add-migration / update-database 등에 문제가있었습니다. 모든 솔루션을 시도했지만 이미 EF를 제거하고 다시 설치하려고 시도했지만 작동하지 않았습니다. 지금까지 그랬습니다. EF 패키지에 문제가있는 것은 이번이 처음이 아닙니다. :(
— GeoffM

2

.NET Core에서는 패키지 관리자 콘솔에 다음을 입력하여 허용 된 답변에 설명 된 것과 동일한 해결 방법에 도달 할 수있었습니다.

Install-Package EntityFramework.Core -Pre

2

나는 같은 문제가 있었고 다른 사람들이 제공 한 대부분의 솔루션을 시도했지만 아래 단계로 나를 위해 일했습니다. VS 2017이 있습니다.

단계 :

Install-Package EntityFramework -IncludePrerelease

그런 다음 클래스를 다음과 같이 만듭니다.

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

그리고 마지막 실행

Enable-Migrations -EnableAutomaticMigrations

나를 위해 작동하지 않은 것 :

: VS.

: -EnableAutomaticMigrations가없는 "Enable-Migrations"명령 만.

: Nuget 패키지 관리자 복원 또는 업데이트.

처음에 내 원래 오류는

/ * '마이그레이션 활성화'라는 용어는 cmdlet, 함수, 스크립트 파일 또는 작동 가능한 프로그램의 이름으로 인식되지 않습니다. 이름의 철자를 확인하거나 경로가 포함 된 경우 경로가 올바른지 확인하고 다시 시도하십시오. 줄 : 1 char : 1 + enable-migration + ~~~~~~~~~~~~~~ ~~ + CategoryInfo : ObjectNotFound : (마이그레이션 활성화 : 문자열) [], CommandNotFoundException * /


1

나는 같은 문제가 있었고 프로젝트 경로에 [또는]과 같은 일부 문자 때문에 프로젝트 경로를 수정하고 잘 작동한다는 것을 알았습니다!


1

Enable-Migrations -EnableAutomaticMigrations


1
여러 솔루션을 시도한 후 솔루션이 잘 작동합니다.
— nguyenhoai890 nov.

Visual Studio Community 2015에서 저를 위해 일했습니다. 감사합니다 (다른 모든 솔루션은 제 경우에 실패했습니다)
— fedeteka

1

이미 마이그레이션 폴더가 있으므로 Visual Studio를 다시 시작하고 패키지 관리자 콘솔에서 Update-Database -verbose를 실행했습니다. 그것은 나를 위해 일했다


1

위의 제안을 모두 시도했지만 아무것도 효과가 없었고 업데이트 Nuget Package Manager하고 작동했습니다 ..


1
  1. 아래 명령을 사용하여 현재 프로젝트에 Entity Framework를 설치합니다. PM> Install-Package EntityFramework -IncludePrerelease

  2. 아래와 같이 Model 폴더에 "MyDBContext"클래스를 추가합니다.

    공개 클래스 MyDBContext : DbContext {공개 MyDBContext () {}}

  3. 이제 아래 명령을 사용하여 현재 프로젝트에 대한 마이그레이션을 활성화하십시오. PM> enable-migrations


1

관리자 권한으로 실행 vs = >> open 프로젝트 열기

-> On the Package manager Console

Enable-migration
add-migration migrationName
update-database


0

솔루션에 여러 프로젝트가 있지만 올바른 기본 프로젝트 세트가 있으므로 작동해야한다고 생각했습니다.

결국 -StartupProject MyProjectName명령에 옵션을 추가해야했습니다.


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

8 년 전에는 .net 코어가 존재하지 않는다고 생각합니다.
— AFetter

0

MVC 웹 프로젝트를 만드는 경우 프로젝트를 만들 때 인증을 선택해야합니다. 기본적으로 선택되어 있지 않습니다. 여기에 이미지 설명 입력


0

6.2로 다운 그레이드하면 도움이되었습니다.
.NET Framework 버전 4.6.1
이전 형식의 프로젝트 (비 .NET Standard)
Visual Studio는 초기 마이그레이션을 위해 관리자 권한으로 열려야합니다.
6.2 이상 버전의 EF에는 최신 .NET Framework가 필요합니다.


-4

솔루션 탐색기 창에서 프로젝트가 열려 있는지 확인합니다.

이것이 문제의 원인 일 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.