.NET Core 3에서 dotnet ef를 찾을 수 없음


170

초기 마이그레이션을 만들기 위해 문서 를 따르고 있습니다. 을 실행 dotnet하면 PATH가 올바르게 작동한다는 의미의 도움말 섹션이 나타납니다.

그런 다음 콘솔 창의 문서에서 아래 명령을 실행하려고합니다.

dotnet ef migrations add InitialCreate  

다음과 같은 오류가 발생합니다.

Could not execute because the specified command or file was not found.  
Possible reasons for this include:  
  * You misspelled a built-in dotnet command.  
  * You intended to execute a .NET Core program, but dotnet-ef does not exist.  
  * You intended to run a global tool, but a dotnet-prefixed executable with this name could not be found on the PATH.
  • 명령을 복사 한 이후 첫 번째 항목을 제외했습니다.
  • 패키지 Microsoft.EntityFrameworkCore.SqlServer 가 설치 되었으므로 두 번째 항목을 제외했습니다 .
  • dotnet을 호출 할 때 도움말 섹션을 얻었으므로 세 번째 항목을 제외했습니다 .

나는 인터넷 검색 문제를 겪고 있지만 버전이 새롭기 때문에 앞으로 할 일이 많지 않으며 이전 버전과 비슷한 문제로 익사합니다.

명시 적으로 추가 해야하는 경우를 대비 하여 Microsoft.EntityFrameworkCore 를 강제로 설치하려고했습니다 . 선택해야 할 최신 버전이 2.2.6이고 다운 그레이드는 끝이 없다는 오류 메시지가 표시됩니다. 시스템에 이미있는 SQL 패키지와 호환되는 버전을 설치하는 방법을 잘 모르겠습니다 (그리고이 문제를 해결하는 올바른 방법인지는 확실하지 않습니다).

탐지 된 패키지 다운 그레이드 : 3.0.0-preview6.19304.10에서 2.2.6으로 Microsoft.EntityFrameworkCore. 다른 버전을 선택하려면 프로젝트에서 직접 패키지를 참조하십시오.
웹->
Microsoft.EntityFrameworkCore.SqlServer 3.0.0-preview6.19304.10->
Microsoft.EntityFrameworkCore.Relational 3.0.0-preview6.19304.10->
Microsoft.EntityFrameworkCore (> = 3.0.0-preview6.19304.10)
웹-> Microsoft. EntityFrameworkCore (> = 2.2.6)

답변:


331

이 도구는 더 이상 기본 제공되지 않으며 명시적인 설치가 필요하다는 ASP.NET Core 3 Preview 4 발표 를 참조하십시오 .

dotnet ef 도구는 더 이상 .NET Core SDK의 일부가 아닙니다.

이 변경 dotnet ef으로 전역 또는 로컬 도구로 설치할 수있는 일반 .NET CLI 도구로 제공 할 수 있습니다. 예를 들어, 마이그레이션 또는 스캐 폴드 a를 관리 하려면 다음 명령을 입력하여 전역 도구로 DbContext설치 dotnet ef하십시오.

dotnet tool install --global dotnet-ef

특정 버전의 도구를 설치하려면 다음 명령을 사용하십시오.

dotnet tool install --global dotnet-ef --version 3.1.4

변경 이유는 문서에 설명되어 있습니다 .

이 변경을 통해 dotnet efEF Core 3.0도 항상 NuGet 패키지로 배포된다는 사실과 일치하여 NuGet에서 일반 .NET CLI 도구로 배포하고 업데이트 할 수 있습니다 .

또한 다음 NuGet 패키지를 프로젝트에 추가해야 할 수도 있습니다.


5
다음은 설치할 버전을 확인하려는 경우 nuget에 대한 링크입니다.
Juan De la Cruz

2
[dotnet-ef --version 3.0.0]은 [dotnet core version 3.1.100]과 가장 호환됩니다.
촉매

전 세계적으로 설치하면 편리하지만, 당신은 또한 수 로컬 DOTNET 도구를 설치 지금
자크 에스 포

Microsoft.EntityFrameworkCore.Tools는 필요하지 않습니다.
yogihosting

9

편집 : 배포에 Dockerfile을 사용하는 경우이 문제를 해결하기 위해 수행 해야하는 단계입니다.

다음을 포함하도록 Dockerfile을 변경하십시오.

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
ENV PATH $PATH:/root/.dotnet/tools
RUN dotnet tool install -g dotnet-ef --version 3.1.1

또한 dotnet ef명령을 다음과 같이 변경하십시오 .dotnet-ef


여전히 PATH가 작동하지 않으면 다음과 같은 ENV 지시문을 사용하십시오. ENV PATH $ PATH : /root/.dotnet/tools
Jaliya Udagedara

4

전역 도구는 기본 디렉토리 또는 특정 위치에 설치할 수 있습니다. 기본 디렉토리는 다음과 같습니다.

  • 리눅스 / macOS ---> $ HOME / .dotnet / tools

  • Windows ---> % USERPROFILE % \. dotnet \ tools

글로벌 도구를 실행하려는 경우 시스템의 PATH 환경 변수에 글로벌 도구를 설치 한 경로가 있고 실행 파일이 해당 경로에 있는지 확인하십시오.

.NET Core 도구 사용 문제 해결


이것은 "dotnet tool install --global dotnet-ef"를 통해 MacOS에 설치했을 때 문제였습니다. 새 구성이 적용되도록 터미널 창을 닫았다가 다시 열라는 메시지가 표시되었지만 기본 설치 폴더는 $ HOME / .net / tools가 PATH 변수에 추가되지 않았습니다.
Mike Dailor

도움이
되었기

1

PowerShell 또는 명령 프롬프트를 관리자 권한으로 실행하고 아래 명령을 실행하십시오.

dotnet 도구 설치 --global dotnet-ef-버전 3.1.3


0

나는 같은 문제가 있었다. 내 PC의 모든 버전을 제거한 다음 dotnet을 다시 설치했습니다.


6
주석으로 더 적합합니다. 해결하고 이유를 자원하는 방법을 설명해야
조쉬 아담스

0

Linux에서 스냅 패키지 dotnet-sdk를 사용하는 경우 ~ .bashrc 등을 다음과 같이 업데이트하여 해결할 수 있습니다.

#!/bin/bash
export DOTNET_ROOT=/snap/dotnet-sdk/current
export MSBuildSDKsPath=$DOTNET_ROOT/sdk/$(${DOTNET_ROOT}/dotnet --version)/Sdks
export PATH="${PATH}:${DOTNET_ROOT}"
export PATH="$PATH:$HOME/.dotnet/tools"

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