Không tìm thấy dotnet trong .NET Core 3


170

Tôi đang theo dõi các tài liệu để tạo một di chuyển ban đầu. Khi tôi thực thi dotnet, tôi nhận được phần trợ giúp, nghĩa là PATH hoạt động đúng.

Sau đó, tôi cố gắng thực hiện lệnh dưới đây từ các tài liệu trong cửa sổ giao diện điều khiển:

dotnet ef migrations add InitialCreate  

Tôi nhận được lỗi sau đây:

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.
  • Tôi đã loại trừ mục đầu tiên kể từ khi tôi sao chép lệnh.
  • Tôi đã loại trừ mục thứ hai vì gói Microsoft.EntityFrameworkCore.SqlServer đã được cài đặt.
  • Tôi đã loại trừ mục thứ ba vì tôi nhận được phần trợ giúp khi gọi dotnet .

Tôi đang giải quyết vấn đề nhưng vì phiên bản này là mới, nên không có gì nhiều để tiếp tục và / hoặc nó chìm đắm trong các vấn đề tương tự từ các phiên bản trước.

Tôi đã cố gắng cài đặt Microsoft.EntityFrameworkCore chỉ trong trường hợp cần phải được thêm rõ ràng. Tôi gặp phải thông báo lỗi cho tôi biết rằng phiên bản mới nhất để chọn là 2.2.6 và việc hạ cấp là không có. Tôi không chắc chắn làm thế nào để cài đặt phiên bản tương thích với gói SQL tôi có trên hệ thống của mình (và thậm chí ít chắc chắn hơn nếu đó là cách tiếp cận đúng để giải quyết vấn đề này).

Đã phát hiện hạ cấp gói: Microsoft.EntityFrameworkCore từ 3.0.0-preview6.19304.10 xuống 2.2.6. Tham khảo gói trực tiếp từ dự án để chọn một phiên bản khác.
Web ->
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)
Web -> Microsoft. EntityFrameworkCore (> = 2.2.6)

Câu trả lời:


328

Xem thông báo cho ASP.NET Core 3 Preview 4, giải thích rằng công cụ này không còn được tích hợp sẵn và yêu cầu cài đặt rõ ràng:

Công cụ ef dotnet không còn là một phần của .NET Core SDK

Thay đổi này cho phép chúng tôi gửi dotnet efnhư một công cụ .NET CLI thông thường có thể được cài đặt như một công cụ toàn cầu hoặc cục bộ. Ví dụ: để có thể quản lý di chuyển hoặc giàn giáo a DbContext, hãy cài đặt dotnet efnhư một công cụ toàn cầu gõ lệnh sau:

dotnet tool install --global dotnet-ef

Để cài đặt phiên bản cụ thể của công cụ, sử dụng lệnh sau:

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

Lý do cho sự thay đổi được giải thích trong các tài liệu :

Tại sao

Thay đổi này cho phép chúng tôi phân phối và cập nhật dotnet efdưới dạng công cụ .NET CLI thông thường trên NuGet, phù hợp với thực tế là EF Core 3.0 cũng luôn được phân phối dưới dạng gói NuGet.

Ngoài ra, bạn có thể cần thêm các gói NuGet sau vào dự án của mình:


5
Đây là liên kết đến nuget nếu bạn muốn xác minh phiên bản sẽ cài đặt
Juan De la Cruz

2
Chỉ cần một lưu ý .. [dotnet-ef --version 3.0.0] là tương thích nhất cho [phiên bản lõi dotnet 3.1.100].
Chất xúc tác

Cài đặt toàn cầu rất tiện lợi, nhưng bạn cũng có thể cài đặt các công cụ dotnet ngay bây giờ
Zach Esposito

Microsoft.EntityFrameworkCore.Tools không cần thiết.
Yogihosting

9

EDIT: Nếu bạn đang sử dụng Dockerfile để triển khai thì đây là những bước bạn cần thực hiện để giải quyết vấn đề này.

Thay đổi Dockerfile của bạn để bao gồm các mục sau:

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

Cũng thay đổi các dotnet eflệnh của bạn để đượcdotnet-ef


Trong trường hợp vẫn còn, PATH không hoạt động, hãy sử dụng chỉ thị ENV như thế này: ENV PATH $ PATH: /root/.dotnet/tools
Jaliya Udagedara

4

Các công cụ toàn cầu có thể được cài đặt trong thư mục mặc định hoặc ở một vị trí cụ thể. Các thư mục mặc định là:

  • Linux / macOS ---> $ HOME / .dotnet / công cụ

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

Nếu bạn đang cố chạy một công cụ toàn cầu, hãy kiểm tra xem biến môi trường PATH trên máy của bạn có chứa đường dẫn nơi bạn đã cài đặt công cụ toàn cầu không và tệp thực thi có nằm trong đường dẫn đó không.

Khắc phục sự cố sử dụng công cụ .NET Core


Đây là vấn đề của tôi, khi tôi cài đặt trên MacOS thông qua "cài đặt công cụ dotnet --global dotnet-ef" Tôi đã có một lời nhắc đóng và mở lại cửa sổ đầu cuối để cấu hình mới có hiệu lực, nhưng thực tế là thư mục cài đặt mặc định $ HOME / .net / tools chưa được thêm vào biến PATH.
Mike Tweetsor

Tôi rất vui vì nó đã giúp bạn :)
Gambitier

1

Chạy PowerShell hoặc dấu nhắc lệnh với tư cách Quản trị viên và chạy bên dưới lệnh.

cài đặt công cụ dotnet --global dotnet-ef --version 3.1.3


0

Tôi đã từng gặp vấn đề tương tự. Tôi đã giải quyết, gỡ cài đặt tất cả các phiên bản trong máy tính của tôi và sau đó cài đặt lại dotnet.


6
Phù hợp hơn như là một nhận xét. Nên giải thích cách giải quyết và tại sao với tài nguyên
Josh Adams

0

nếu bạn sử dụng gói snap dotnet-sdk trên linux thì điều này có thể giải quyết bằng cách cập nhật ~ .bashrc / vv của bạn như sau:

#!/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

Đối với tôi, vấn đề đã được giải quyết sau khi tôi đóng Visual Studio và mở lại

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.