"추가 마이그레이션"이라는 용어가 인식되지 않습니다.


120

MSDN Tutorial 을 사용하여 PM> Add-Migration MyFirstMigration -context BloggingContext어제 성공적으로 실행 된 명령 을 VS2015에서 실행 하고 있지만 오늘은 다른 사용자가 지적한 다음 오류가 표시 됩니다 . 솔루션 탐색기에서 마이그레이션 폴더를 삭제하고 SQL Express 2014 on Win 8.1동일한 오류 에서 해당 DB를 삭제했습니다 . 실행해도 Add-Migration MyFirstMigration동일한 오류가 발생합니다.

Add-Migration : The term 'Add-Migration' 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, verify that the path is correct and try again.
At line:1 char:1
+ Add-Migration MyFirstMigration -context BloggingContext
+ ~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Add-Migration:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

참고 : 2016 년 6 월 27 일에 릴리스 된 최신 버전의 ASP.NET Core 1.0 및 VS2015-업데이트 3을 사용하고 있습니다.

최신 정보

다음 명령은 명령 창을 사용할 때 Windows 탐색기의 프로젝트 디렉터리에서 제대로 작동합니다.

> dotnet ef migrations add MyFirstMigration --context BloggingContext
> dotnet ef database update --context BloggingContext

2a 업데이트

다음은 project.json 파일입니다.

{
  "userSecretsId": "aspnet-ASPCore_RTM_CodeFirst_test-bef835d9-9831-41a8-bc3a-cd2f1477a880",

  "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.0.0",
      "type": "platform"
    },
    "Microsoft.AspNetCore.Authentication.Cookies": "1.0.0",
    "Microsoft.AspNetCore.Diagnostics": "1.0.0",
    "Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "1.0.0",
    "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0",
    "Microsoft.AspNetCore.Mvc": "1.0.0",
    "Microsoft.AspNetCore.Razor.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    },
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
    "Microsoft.AspNetCore.StaticFiles": "1.0.0",
    "Microsoft.EntityFrameworkCore.SqlServer": "1.0.0",
    "Microsoft.EntityFrameworkCore.SqlServer.Design": {
      "version": "1.0.0",
      "type": "build"
    },
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
    "Microsoft.Extensions.Configuration.Json": "1.0.0",
    "Microsoft.Extensions.Configuration.UserSecrets": "1.0.0",
    "Microsoft.Extensions.Logging": "1.0.0",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.Extensions.Logging.Debug": "1.0.0",
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0",
    "Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    },
    "Microsoft.VisualStudio.Web.CodeGenerators.Mvc": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    }
  },

  "tools": {
    "BundlerMinifier.Core": "2.0.238",
    "Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final",
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final",
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
    "Microsoft.Extensions.SecretManager.Tools": "1.0.0-preview2-final",
    "Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
      "version": "1.0.0-preview2-final",
      "imports": [
        "portable-net45+win8"
      ]
    }
  },

  "frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "dotnet5.6",
        "portable-net45+win8"
      ]
    }
  },

  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },

  "runtimeOptions": {
    "configProperties": {
      "System.GC.Server": true
    }
  },

  "publishOptions": {
    "include": [
      "wwwroot",
      "Views",
      "Areas/**/Views",
      "appsettings.json",
      "web.config"
    ]
  },

  "scripts": {
    "prepublish": [ "bower install", "dotnet bundle" ],
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  }
}

제목에 태그 물건을하지 마십시오

나는 당신의 패키지를보고 싶어 당신의 project.json하시기 바랍니다 쓰기
바삼 Alugili

@BassamAlugili 요청에 따라 peoject.json 파일의 관련 섹션을 추가하기 위해 내 게시물에 UPDATE 2를 추가했습니다. 더 많은 정보가 필요하면 알려주세요
nam

@briceIam (EF 팀)의 답변을 받았습니다.
바삼 Alugili

@BassamAlugili 내 게시물의 UPDATE 2 섹션에 project.json 파일의 전체 내용을 추가했습니다. 의 응답에서 내 의견을 참조하십시오 @bricelam. 내가 무엇을 놓칠 수 있습니까?
nam

답변:


241

너무 간단합니다.

Microsoft.EntityFrameworkCore.Tools너겟에서 패키지를 설치 하십시오.

설치 패키지 Microsoft.EntityFrameworkCore.Tools-버전 3.1.5

이 링크를 사용하여 최신 버전을 설치할 수도 있습니다. Nuget 패키지 링크

.NET CLI 명령 :

dotnet add package Microsoft.EntityFrameworkCore.Tools

아직 Visual Studio 2017을 사용하고 있기 때문에 버전 2.2.6을 설치했습니다.
BluE

감사합니다. 이것은 모두가하는 일반적인 실수입니다
Nitesh Shaw

1
또한 Visual Studio를 다시 시작해야했습니다
Liviu Sosu

48

다음 단계를 시도하십시오.

1) project.json파일을 열고 종속성도구 섹션 에서 모든 Microsoft.EntityFrameworkCore.Tools 참조를 제거 합니다.

2) 닫기 패키지 관리자 콘솔 ( PMC는 ) 및 다시 시작 비주얼 스튜디오

3) 종속성 섹션 아래에 추가 하십시오.

 "Microsoft.EntityFrameworkCore.Tools": {
  "version": "1.0.0-preview2-final",
  "type": "build"
 }

4) 추가 에 따라 도구 섹션

"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"

5) Visual Studio 2015 다시 시작

6) 오픈 PMC 입력

Add-Migration $Your_First_Migration_Name$

이는 Visual Studio가 시작될 때 PMC 가 도구를 인식 하기 때문에 발생합니다 .


5
나는 거의 ... 뭔가 다시 설치 / 다시 시작하지 않고 VS2015에 코딩의 시간을 통해 얻을 수 있습니다
라이언 머피

37

Microsoft.EntityFrameworkCore.Toolsdependencies섹션 에서 참조 되는지 확인 하십시오 project.json. NuGet은 tools섹션 에서 패키지 관리자 명령을로드하지 않습니다 . ( NuGet / Home # 3023 참조 )

{
  "dependencies": {
    "Microsoft.EntityFrameworkCore.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    }
  }
}

2
내 게시물의 UPDATE 2에서 전체 project.json 파일 콘텐츠를 복사했습니다. 는 Microsoft.EntityFrameworkCore.Tools물론 내부 종속성 섹션입니다. Add-MigrationUpdate-Database같은 튜토리얼에서 지시 명령은, 전에 밤을했다. 그러나 다음날 아침 내 모델을 약간 변경 한 후 시도하고 이러한 명령을 다시 시도했을 때 내 게시물에 설명 된 오류 메시지가 표시되었습니다. SQL Server에서 Migration 폴더와 해당 데이터베이스도 삭제했지만 이러한 명령을 실행 한 후에도 동일한 오류 메시지가 나타납니다. 내가 무엇을 놓칠 수 있습니까?
nam

나는 또한 이러한 증상이 있습니다. 저는 Visual Studio 2015 업데이트 3
Kolya_Net을 사용

재현 가능한 단계와 많은 환경 정보를 사용 하여 NuGet에서 버그를 신고 해보세요 . 팀 이전에이 영역에서 문제를 언급했지만 결코 재현 할 수 없습니다.
bricelam

1
이상하게도 제거하고 나중에 tools다시 추가하면 문제가 해결됩니다 . 로 이동 dependencies하면 다음과 같은 오류 메시지가 나타납니다. 'Microsoft.EntityFrameworkCore.Tools'가 'src \ <your project> 프로젝트에 설치되어 있지 않기 때문에이 명령을 실행할 수 없습니다. project.json의 'tools'섹션에 'Microsoft.EntityFrameworkCore.Tools'를 추가합니다. 자세한 내용은 go.microsoft.com/fwlink/?LinkId=798221 을 참조하십시오.
토르스텐 Westheider

VS2017 ASP.NET Core를 사용하고 있으며 동일한 문제가 발생했습니다. 이 답변도 해결되었습니다!
Westerlund.io

14

같은 문제 ... 동에 의해 해결 다음

1.) pm 관리자 닫기 2.) Visual Studio 닫기 3.) Visual Studio 열기 4.) pm 관리자 열기

트릭은 VS를 닫기 전에 PM 관리자를 닫는 것 같습니다.


예, PM과 VS를 리로딩하는 것이 해결책입니다, 이전 버전에서 생성 된 최신 비주얼 스튜디오에서 프로젝트를 열 때 발생합니다. 이러한 코드를 열면 VS가 자동 조정을 거의 시도하지 않습니다. 및 VS.
Malik Khalil

9

나도이 문제가 있었다. VS2015를 닫고 열었고 문제를 "수정"했습니다 ...


VS 2019 커뮤니티 에디션에서 이런 일이 발생했습니다.
Gabe

9

Entity-Framework버전 이 무엇인지 알아야합니다 . 또한 project.json다음 섹션 을 확인 하고 제어해야합니다.

에서 종속성

검사:

Microsoft.EntityFrameworkCore.Tools": {
  "version": "1.0.0-preview2-final",
  "type": "build"
},

이번 장:

"version": "1.0.0-preview2-final",

귀하의 버전과 관련 Entity-Framework이 있으며이를 변경해야합니다.

그 후의 두 번째 섹션 proj.json이 있습니다. Tools섹션에는 JSON다음이 있습니다.

"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",

또한이 코드 Entity-Framework부분은 종속성 섹션 의 코드의 마지막 부분과 관련이 있습니다 .

참고 : 이 문제를 수행 한 후에는 CMDVisual Studio 를 닫고 다시 시작 해야합니다 .


6

내가해야 할 일 ...

1) 도구-> Nuget 패키지 관리자-> 패키지 관리자 설정

2) 일반 탭

3) 모든 NuGet 캐시 지우기

4) Visual Studio 다시 시작



5

Microsoft.EntityFrameworkCore.Tools를 초기화하십시오. PM에서 실행

C:\Users\<username>\.nuget\packages\Microsoft.EntityFrameworkCore.Tools\1.0.0-preview2-final\tools\init.ps1.

그것은 같은 문제로 나를 도왔습니다. 도구의 버전이 다를 수 있습니다. 그것은 당신이 당신의 프로젝트에서 무엇을 사용하는지에 달려 있습니다.


1
저에게는 상대 경로. \ packages \ Microsoft.EntityFrameworkCore.Tools.1.1.0 \ tools \ init.ps1을 사용합니다. 이는 PM의 현재 디렉터리가 이미 솔루션 디렉터리이기 때문입니다. 그러나 저에게는 도구 패키지가 해결책. 개인적으로 다시 시작, 편집, 다시 설치하지 않기 때문에 이것이 최선의 해결책이라고 생각합니다. 순식간에 작동합니다.
William Leader

4

나는 같은 문제에 부딪쳤다. 내 프로젝트의 대부분은 도구에서 같은 것을 가졌습니다.

"tools": {
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
}

이것은 하나의 프로젝트를 제외한 모든 프로젝트에서 잘 작동했습니다. 도구의 항목을 다음과 같이 변경했습니다.

"tools": {
    "Microsoft.EntityFrameworkCore.Tools": {
    "version": "1.0.0-preview2-final",
    "type": "build"
  }
}

그리고 dotnet restore. 복원이 완료된 후 Add-Migration정상적으로 작동했습니다.


2

나는 같은 문제가 있었고 솔루션 파일의 Visual Studio 버전 문제라는 것을 알았습니다.

나는 목표로했다 :

VisualStudioVersion = 14.0.25123.0

하지만 다음을 목표로해야했습니다.

VisualStudioVersion = 14.0.25420.1

솔루션 파일을 직접 변경 한 후 EF Core cmdlet은 패키지 관리자 콘솔에서 작동하기 시작했습니다.


도와 주셔서 감사합니다. 사용 14.0.25421.03 Update 3중인 것보다 훨씬 더 높은 버전 을 사용하고 있습니다.
nam

2

이것이 내가 따라 간 단계이며 문제를 해결했습니다.

1) Power Shell을 버전 2에서 3으로 업그레이드했습니다.

2) PM 콘솔 종료

3) Visual Studio 다시 시작

4) PM 콘솔 dotnet 복원에서 아래 명령을 실행하십시오.

5) 추가 마이그레이션 InitialMigration

작동했습니다 !!!


1

나는이 문제가 있었고 이전 솔루션 중 어느 것도 도움이되지 않았습니다. 내 문제는 실제로 Windows 7 컴퓨터의 오래된 버전의 powershell 때문이었습니다. 일단 powershell 5로 업데이트하면 작동하기 시작했습니다.


1

패키지 관리자 콘솔 (Visual Studio 내)로 이동하여 아래 명령을 실행합니다.

C:\Users\<YOUR_USER>\.nuget\packages\Microsoft.EntityFrameworkCore.Tools\<YOUR_INSTALLED_VERSION>\tools\init.ps1


0

MS가 여기에 자세히 설명 된 몇 가지 (중단) 변경 사항을 적용했기 때문에 2017 년에 답변을 업데이트해야한다고 생각합니다.

https://github.com/aspnet/EntityFramework/issues/7053

요약하면 이제 아래와 같이 도구 섹션에 EntityFrameWorkCore.Tools.DotNet에 대한 참조가 필요합니다.

"Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0"

일부 문제가 발생하는 경우를 대비하여 아래에 작업중인 project.json 파일도 게시했습니다.

{
  "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.0.1",
      "type": "platform"
    },
    "Microsoft.AspNetCore.Diagnostics": "1.0.0",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.AspNetCore.Razor.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    },
    "Microsoft.AspNetCore.StaticFiles": "1.0.0",
    "Microsoft.AspNetCore.Mvc": "1.0.1",
    "Microsoft.EntityFrameworkCore.SqlServer": "1.0.1",
    "Microsoft.Extensions.Configuration.Json": "1.0.1",
    "Microsoft.EntityFrameworkCore.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    }
  },

  "tools": {
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final",
    "Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final",
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
    "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0"
  },

  "frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "dotnet5.6",
        "portable-net45+win8"
      ]
    }
  },

  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },

  "runtimeOptions": {
    "configProperties": {
      "System.GC.Server": true
    }
  },

  "publishOptions": {
    "include": [
      "wwwroot",
      "web.config"
    ]
  },

  "scripts": {
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  }
}

Visual Studio도 다시 시작해야 할 것입니다.
Francis

0

나는 위의 모든 것을 시도했지만 운이 없었습니다. 최신 .net core 2.0 패키지를 다운로드하고 명령을 다시 실행했는데 제대로 작동했습니다.


프로젝트가 업그레이드 될 수 있도록 그물 코어 2.0 안정은 지금 1.1.1까지 2.0?
nam

1
.NET Core 2.0은 최종 릴리스로 2017 년 8 월 14 일 어제부터 사용할 수 있습니다. blogs.msdn.microsoft.com/dotnet/2017/08/14/…
Tyrone Moodley

0

제 경우에는 Nuget을 통해 종속성을 추가했습니다.

Microsoft.EntityFrameworkCore.Tools

그런 다음 패키지 관리자 콘솔을 통해 실행합니다.

add-migration Initial -Context "ContextName" -StartupProject "EntryProject.Name" -Project "MigrationProject.Name"

0

이것이 나를 위해 일한 것입니다. Visual Studio에서

도구-> NuGet 패키지 관리자-> 패키지 관리자 콘솔

여기에 이미지 설명 입력

그런 다음 다음과 같이 실행할 수 있습니다 Add-Migration.

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