EF Core 도구 업데이트 필요


151

VS 2017 패키지 관리자 콘솔에서 dotnet ef 도구를 사용할 때 EF Core 도구를 업데이트해야한다는 경고 메시지가 표시됩니다.

PM> dotnet ef migrations list -s ../RideMonitorSite

The EF Core tools version '2.1.1-rtm-30846' is older than that of the runtime '2.1.2-rtm-30932'. Update the tools for the latest features and bug fixes.
20180831043252_Initial

하지만 내 csproj 파일에는 다음 항목이 있습니다.

  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.1.2" />
  </ItemGroup>

설치된 버전이 실제로 오래된 버전임을 확인했습니다.

PM> dotnet ef --version
Entity Framework Core .NET Command-line Tools
2.1.1-rtm-30846

그렇다면 도구를 업데이트하려면 어떻게해야합니까? BTW, 오래된 global.json 파일 이이 문제를 일으킬 수 있다는 다른 답변을 보았습니다. 하지만 솔루션 어디에도 global.json 파일이 없습니다.


난 당신이 DotNetCliToolReference,에 대한 참조 제거 할 수 있습니다 생각 github.com/aspnet/EntityFramework.Docs/issues/708
안토니오 Campagnaro

제안에 감사드립니다, @AntonioCampagnaro. 그러나 이러한 참조를 제거해도 여전히 경고 메시지가 나타납니다.
Mark Olbert

1
같은 패키지 관리자 콘솔하여 업그레이드 이 답변
세바스찬 페라리에게

답변:


314

특정 버전에 대해 명령 줄, Cmd 또는 PowerShell 을 사용합니다.

dotnet tool update --global dotnet-ef --version 3.1.0

또는 최신 버전 사용 (다시 설치에도 작동) :

dotnet tool update --global dotnet-ef


2
나는 버전 3.0.0을 가지고 있었고 첫 번째 명령은 나를 위해 일했지만 두 번째 명령은 작동하지 않았습니다. 버전을 지정하는 whitout 명령을 실행할 때 다음 오류가 발생했습니다. 'dotnet-ef'도구는 다음과 같은 이유로 업데이트에 실패했습니다 : 도구 패키지를 복원 할 수 없습니다 ...
Pippo46

77
왜 그들은 이것을 오류 메시지에 넣을 수 없습니까 !
Simon_Weaver

1
우리는 아마 홍보 한 일 ... @Simon_Weaver해야
Riscie

13
도대체 저는 PR을 만들었습니다 : github.com/dotnet/efcore/pull/20792
Riscie

19

나는이 문제 를 github개발 팀에 넘겼다 . 이는 EF Core 기반 AspNet Core 사이트를 만들 때로드되는 현재 도구 또는 너겟 패키지 의 알려진 문제 로 밝혀졌습니다. 향후 릴리스에서 수정 될 예정입니다.

현재 해결 방법은 경고를 무시하는 것입니다.

AspNet Core 메타 패키지의 버전을 명시 적으로 정의하기 위해 csproj 파일을 조정하는 또 다른 해결 방법도 제공됩니다. 나는 여전히 경고 메시지를 받았다.


12

이것을 시도하십시오 : Install-Package Microsoft.EntityFrameworkCore.Tools

문제가 계속 발생하면 다음도 실행하십시오. Update-Package Microsoft.EntityFrameworkCore.Tools


3
이것은 좋은 제안이지만 문제 를 해결하지 못했습니다 .
Banoona

나를 위해 누락 된 패키지를 설치하고 1 세대 문제를 해결했지만 경고가 지속됩니다. 어느 쪽이든 좋은 제안.
dyslexicanaboko

12

나를 위해 일한 솔루션은 패키지 관리자 콘솔에서 다음 명령을 실행하는 것입니다.

PM> Install-Package Microsoft.EntityFrameworkCore -Version 2.1.11
PM> Install-Package Microsoft.EntityFrameworkCore.Tools -Version 2.1.11

내 경우에는 다음 오류가 발생한 경우 버전이 오류 메시지의 버전과 일치하는지 확인하십시오.

The EF Core tools version '2.1.1-rtm-30846' is older than that of the runtime '2.1.11-servicing-32099'. Update the tools for the latest features and bug fixes.

다음 사이트에서 사용 가능한 버전을 확인하십시오. https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/


3

내 솔루션은 microsoft https://www.nuget.org/packages/dotnet-ef 에서 dotnet-ef 도구를 설치하는 것이 었습니다 . 동일한 명령을 사용하지만 경고는 없습니다. 변경 사항은 dotnet ef 대신 dotnet-ef를 사용하는 것입니다.

이미 dotnet-ef가 설치되어있는 경우 dotnet tool update --global dotnet-ef --version n.n.n(nnn 업데이트 할 버전)


2

새 .NET Core SDK v2.1.401 버전을 설치하고> dotnet ef --version을 다시 확인합니다. 나는 같은 문제가 있었고 내 경우에는 효과가있었습니다. 또한 Microsoft.EntityFrameworkCore.Tools.DotNet을 추가 할 필요가 없습니다.


고맙습니다, @surbaniak. 나는 이미 그것을했다. 이것은 현재 너겟 패키지의 알려진 문제이며 수정 대상입니다. 해결 방법은 기능 손실이 없기 때문에 문제를 무시하는 것입니다 (의도적으로이 문제를 직접 확인하지 않음).
Mark Olbert

이 답변은 저에게도 도움이되었습니다. .NET Core SDK v2.1.403 (거의 동일한 버전)을 설치했는데 경고가 더 이상 표시되지 않았습니다. .Net core SDK와 런타임이 모두 업데이트되어 버전이 최신이라는 경고를 피할 수 있는지 확인해야합니다. URL은 Microsoft 웹 사이트에서도 변경되었지만 다음을 사용했습니다. microsoft.com/net/download/dotnet-core/2.1
Tore Aurstad

.NET Core SKD v2.1.701 (dotnet-sdk-2.1.701-win-x64.exe)을 설치했지만 여전히 오류가 발생합니다.
Patee Gutee 19.07.17

2

이 문제를 해결하려면 다음 기술 중 하나를 따르십시오.


  • 기술 1 : 패키지 관리자 콘솔 사용 (특히 Microsoft Visual Studio 사용자 용)
    PM >Install-Package Microsoft.EntityFrameworkCore.Tools -Version 2.1.2

  • 기술 2 : .NET CLI 사용
    >dotnet add package Microsoft.EntityFrameworkCore.Tools --version 2.1.2

  • 기술 3 : 패키지 참조 사용

<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.1.2">
  <PrivateAssets>all</PrivateAssets>
  <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
  • 기술 4 : 패킷 CLI 사용
    >paket add Microsoft.EntityFrameworkCore.Tools --version 2.1.2

기억 : 이 버전을 사용하려면 NuGet 3.6 이상 이 필요합니다 .
참조 링크 : https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.Tools/2.1.2


1
  • 문제 무시
  • <PackageReference Include = "Microsoft. EntityFrameworkCore. Tools"Version = ""/>을 업데이트하지 마십시오.
  • 제 경우에는 'Update-Database -Context MyElementContext'로 앞으로 나아 갔고 이제는 모두 정상적으로 작동합니다.

나는 Dino Esposito의 'Programming ASP.NET Core'책에서 이것을 발견했습니다.

'참고이 CLI 도구 버전은 애플리케이션에서 사용할 .NET Core 런타임 버전과 동일하지 않습니다. 런타임 버전은 프로젝트 파일에 지정되어 있으며 선택한 IDE의 사용자 인터페이스 내에서 편안하게 편집 할 수 있습니다. 대신 프로젝트 파일을 수동으로 편집하려면 .csproj XML 파일을 편집하고 TargetFramework 요소의 값을 변경하는 것만 큼 쉽습니다. 값은 버전을 식별하는 모니 커 (예 : netcoreapp2.0)를 나타냅니다. '


0

구체적으로 패키지를 업데이트하는 방법을 찾을 수 없었지만 패키지 관리자 콘솔에서 'update-package'를 실행했습니다. EF Core 도구를 포함하여 프로젝트에서 참조되는 모든 패키지를 실행하고 업데이트했습니다. 원하지 않는 패키지를 업데이트 할 수 있으므로 이상적이지 않을 수 있습니다.


고맙습니다, @malckier. 나는 update-package를 실행했고 몇 가지 내용을 업데이트했습니다. 그러나 경고 메시지는 여전히 나타났습니다.
Mark Olbert

0

이 문서의 단계를 따르면 문제를 해결하는 데 도움이되었습니다-https: //docs.oracle.com/cd/E17952_01/connector-net-en/connector-net-entityframework-core-scaffold-example.html

Visual Studio에서 패키지 관리자 콘솔을 사용하여 데이터베이스 스캐 폴딩

  • Visual Studio를 열고 C # 용 새 콘솔 앱 (.NET Core)을 만듭니다.
  • 패키지 관리자 콘솔을 사용하여 EF Core 용 MySQL NuGet 패키지를 추가합니다. 예를 들어 다음 명령을 사용하여 MySql.Data.EntityFrameworkCore v8.0.13 패키지를 추가합니다.

Install-Package MySql.Data.EntityFrameworkCore-버전 8.0.13

중대한

버전 (예 : -Version 8.0.13)은 사용중인 실제 커넥터 / NET 버전과 일치해야합니다. 현재 버전 정보.

  • 도구 및 NuGet 패키지 관리자 메뉴에서 패키지 관리자 콘솔 또는 솔루션 용 NuGet 패키지 관리를 선택하여 다음 NuGet 패키지를 설치합니다.

    Microsoft.EntityFrameworkCore.Design
    
    EF Core 1.1 only: Also add the MySql.Data.EntityFrameworkCore.Design package.
    
    Microsoft.EntityFrameworkCore.Tools version 1.1.6 (for EF Core 1.1) and Microsoft.EntityFrameworkCore.Tools version 2.0.3 (for EF Core 2.0)
    Note
    
    The .NET tools are included in the .NET Core 2.1 SDK and not required or supported for EF Core 2.1. If this is an upgrade, remove the reference to that package from the .csproj file (version 2.0.3 in this example) :
    
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.3" />
    

    열기 패키지 관리자 콘솔 및 엔티티를 생성하기 위해 프롬프트에서 다음 명령을 입력하고 DbContext에 대한 sakila데이터베이스 (귀하의 사용자에 대한 설정 = 및 암호 = 옵션을 일치하도록 연결 문자열 값을 조정) :

Scaffold-DbContext "server = localhost; port = 3306; user = root; password = mypass; database = sakila"MySql.Data.EntityFrameworkCore -OutputDir sakila -f

Visual Studio는 엔터티 및 sakilaContext.cs 파일에 매핑 된 모든 테이블을 포함하는 프로젝트 내에 새 sakila 폴더를 만듭니다.

Oracle 지침에 EF Core 2.1에는 Microsoft.EntityFrameworkCore.Tools가 필요하지 않다고 나와 있지만 EF 2.2와 호환되는 버전 2.2.0을 설치했습니다.


0

Martin과 마찬가지로 특정 버전에 대해 명령 줄, Cmd 또는 PowerShell을 사용합니다.

dotnet 도구 업데이트 --global dotnet-ef --version 3.1.0

또는 최신 버전 사용 (재설치에도 작동) :

dotnet 도구 업데이트 --global dotnet-ef

그러나, 내 PC에 문제가 있습니다. "어떤 버전을 지정하는 명령을 실행할 때 다음 오류가 발생했습니다. 다음으로 인해 도구 'dotnet-ef'를 업데이트하지 못했습니다 : 도구 패키지를 복원 할 수 없습니다."Liko Pippo46

따라서 다음 단계를 사용합니다.

dotnet tool uninstall --global dotnet-ef하지만 동일한 문제가 발생하여 확장 디렉터리로 이동합니다. C : \ Users \ Evan.dotnet \ tools.store \ dotnet-ef

그리고 이전 버전 (2.x)을 찾았고 두 번째 문제는 fileproject.assets.json 파일을 찾을 수 없다는 것입니다.

그래서 2.x 버전의 fileproject.assets.json을 상위 저장소에 복사합니다.

그리고 모든 것이 완벽하게 이루어졌습니다.

  1. dotnet 도구 제거 --global dotnet-ef

    2.x 버전을 제거합니다.

  2. dotnet 도구 설치 --global dotnet-ef

    3.1 하나 설치



0

애플리케이션에서 Dot.net 코어 라이브러리 버전은 2.1.2이고 Entity Framework core (2.1.1)의 2.1.1에서 작업 중입니다. 따라서 dot.net 코어 버전 (2.1.2)과 같아야하는 라이브러리 버전을 업데이트합니다.

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