ไม่พบ dotnet ef ใน. NET Core 3


171

ฉันกำลังติดตามเอกสารเพื่อสร้างการย้ายข้อมูลเริ่มต้น เมื่อฉันดำเนินการdotnetฉันจะได้รับส่วนช่วยเหลือซึ่งหมายความว่าเส้นทางทำงานได้อย่างถูกต้อง

จากนั้นฉันพยายามเรียกใช้คำสั่งด้านล่างจากหน้าต่างเอกสารในคอนโซล:

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

ฉัน googling ปัญหา แต่เนื่องจากรุ่นใหม่มีไม่มากที่จะไปและ / หรือมันจมอยู่ในปัญหาที่คล้ายกันจากรุ่นก่อนหน้า

ฉันพยายามบังคับให้ติดตั้งMicrosoft.EntityFrameworkCoreในกรณีที่จำเป็นต้องเพิ่มอย่างชัดเจน ฉันพบข้อความแสดงข้อผิดพลาดว่ารุ่นล่าสุดที่เลือกคือ 2.2.6 และการปรับลดรุ่นไม่ต้องไป ฉันไม่แน่ใจว่าจะติดตั้งเวอร์ชันที่เข้ากันได้กับ SQL- แพ็คเกจที่ฉันมีในระบบของฉันได้อย่างไร

ตรวจพบการปรับลดแพ็คเกจ: Microsoft.EntityFrameworkCore จาก 3.0.0-preview6.19304.10 ถึง 2.2.6 อ้างอิงแพ็คเกจโดยตรงจากโครงการเพื่อเลือกเวอร์ชันอื่น
เว็บ ->
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)

คำตอบ:


332

ดูการประกาศสำหรับ 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 efเป็นเครื่องมือ. NET CLI ปกติบน NuGet ซึ่งสอดคล้องกับความจริงที่ว่า EF Core 3.0 นั้นถูกแจกจ่ายเป็นแพ็คเกจ NuGet ด้วยเช่นกัน

นอกจากนี้คุณอาจต้องเพิ่มแพ็คเกจ NuGet ต่อไปนี้ในโครงการของคุณ:


5
นี่คือลิงค์ไปสู่ ​​nuget หากคุณต้องการตรวจสอบเวอร์ชั่นที่จะติดตั้ง
Juan De la Cruz

2
เพียงแค่ทราบ .. [dotnet-ef --version 3.0.0] นั้นเข้ากันได้มากที่สุดสำหรับ [dotnet core version 3.1.100]
ตัวเร่งปฏิกิริยา

การติดตั้งทั่วโลกนั้นสะดวก แต่คุณยังสามารถติดตั้งเครื่องมือ dotnet ได้ในตอนนี้
Zach Esposito

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


ในกรณีที่เส้นทางยังไม่ทำงานให้ใช้คำสั่ง ENV ดังนี้: ENV PATH $ PATH: /root/.dotnet/tools
Jaliya Udagedara

4

เครื่องมือทั่วโลกสามารถติดตั้งในไดเรกทอรีเริ่มต้นหรือในสถานที่เฉพาะ ไดเรกทอรีเริ่มต้นคือ:

  • Linux / macOS ---> $ HOME / .dotnet / tools

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

หากคุณกำลังพยายามเรียกใช้เครื่องมือทั่วโลกให้ตรวจสอบว่าตัวแปรสภาพแวดล้อมของเส้นทางบนเครื่องของคุณมีเส้นทางที่คุณติดตั้งเครื่องมือทั่วโลกและปฏิบัติการที่อยู่ในเส้นทางนั้น

แก้ไขปัญหาการใช้เครื่องมือ. NET Core


นี่เป็นปัญหาของฉันเมื่อฉันติดตั้งบน MacOS ผ่าน "เครื่องมือ dotnet ติดตั้ง --global dotnet-ef" ฉันได้รับแจ้งให้ปิดและเปิดหน้าต่างเทอร์มินัลอีกครั้งเพื่อให้การกำหนดค่าใหม่จะมีผล แต่ในความเป็นจริงแล้ว HOME / .net / tools ไม่ได้ถูกเพิ่มไปยังตัวแปร PATH
Mike Dailor

ฉันดีใจที่มันช่วยคุณ :)
Gambitier

1

เรียกใช้ PowerShell หรือพรอมต์คำสั่งในฐานะผู้ดูแลระบบและเรียกใช้คำสั่งด้านล่าง

การติดตั้งเครื่องมือ dotnet --global dotnet-ef --version 3.1.3


0

ผมมีปัญหาเหมือนกัน. ฉันได้รับการแก้ไขการถอนการติดตั้งเดเดอร์ทั้งหมดในพีซีของฉันแล้วติดตั้ง dotnet


6
เหมาะกว่าเป็นความคิดเห็น ควรอธิบายวิธีการแก้ไขและสาเหตุที่มากับทรัพยากร
Josh Adams

0

หากคุณใช้แพ็คเกจ snap dotnet-sdk บน linux สิ่งนี้สามารถแก้ไขได้โดยการอัพเดต ~ .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"

0

สำหรับฉันปัญหาได้รับการแก้ไขหลังจากที่ฉันปิด Visual Studio และเปิดอีกครั้ง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.