我关注 the docs 是为了创建初始迁移。当我执行 dotnet
时,我得到了帮助部分,这意味着 PATH 可以正常工作。
然后我尝试从控制台窗口中的文档执行以下命令:
dotnet ef 迁移添加 InitialCreate
我收到以下错误:
由于找不到指定的命令或文件,无法执行。可能的原因包括:
您拼错了内置的 dotnet 命令。
您打算执行 .NET Core 程序,但 dotnet-ef 不存在。
您打算运行一个全局工具,但在 PATH 上找不到具有此名称的带 dotnet 前缀的可执行文件。
自复制命令以来,我排除了第一项。
我排除了第二项,因为安装了包 Microsoft.EntityFrameworkCore.SqlServer。
我排除了第三项,因为我在调用 dotnet 时获得了帮助部分。
我正在谷歌搜索这个问题,但由于版本是新版本,没有太多可做的和/或它淹没在早期版本的类似问题中。
我试图强制安装 Microsoft.EntityFrameworkCore 以防需要明确添加。我遇到错误消息,告诉我要选择的最新版本是 2.2.6,降级是不行的。我不确定如何安装与我系统上已有的 SQL 包兼容的版本(甚至更不确定这是否是解决此问题的正确方法)。
检测到包降级:Microsoft.EntityFrameworkCore 从 3.0.0-preview6.19304.10 到 2.2.6。直接从项目中引用包以选择不同的版本。 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)
请参阅 ASP.NET Core 3 Preview 4 的 announcement,其中说明此工具不再是内置的,需要显式安装:
dotnet ef 工具不再是 .NET Core SDK 的一部分 此更改允许我们将 dotnet ef 作为常规 .NET CLI 工具提供,可以作为全局或本地工具安装。例如,为了能够管理迁移或构建 DbContext,请安装 dotnet ef 作为全局工具,键入以下命令:
dotnet tool install --global dotnet-ef
要安装特定版本的工具(请参阅 nuget.org 中的所有可用版本),请使用以下命令:
dotnet tool install --global dotnet-ef --version 3.1.4
docs 中解释了更改的原因:
为什么此更改允许我们将 dotnet ef 作为 NuGet 上的常规 .NET CLI 工具进行分发和更新,这与 EF Core 3.0 也始终作为 NuGet 包分发的事实一致。
此外,您可能需要将以下 NuGet 包添加到您的项目中:
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.Design
Microsoft.EntityFrameworkCore.Tools
如果您使用 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
我通过使用以下命令在本地安装 dotnet-f 工具解决了这个问题。
如果您正在设置此存储库
dotnet new tool-manifest
dotnet tool install --local dotnet-ef --version 5.0.6
然后使用 dotnet dotnet-ef 而不是 dotnet-ef。
全局工具可以安装在默认目录或特定位置。默认目录为:Linux/macOS ---> $HOME/.dotnet/tools Windows ---> %USERPROFILE%\.dotnet\tools 如果您尝试运行全局工具,请检查 PATH 环境变量是否打开您的机器包含安装全局工具的路径,并且可执行文件位于该路径中。
Troubleshoot .NET Core tool usage issues
以管理员身份运行 PowerShell 或命令提示符并运行以下命令。
dotnet tool install --global dotnet-ef --version 3.1.3
这将适用于我在 Ubuntu 中的 Visual Studio 代码
dotnet tool install --global dotnet-ef
dotnet tool restore
之后,所有的执行都像
dotnet tool run dotnet-ef
或者
dotnet dotnet-ef
如果您在 Linux 上使用 Snap 软件包 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"
/ etc
?或者是其他东西?无论如何,你能详细说明一下吗?
原因是 - dotnet ef
工具不再是 ASP.NET Core 3.0 中 .NET Core SDK 的一部分。
解决方案:将 dotnet ef
安装为全局工具
脚步:
在项目根目录中以管理员身份运行 PowerShell 或命令提示符 运行以下命令。
对于最新版本:
dotnet 工具安装 --global dotnet-ef
对于特定版本:
dotnet tool install --global dotnet-ef --version <
在 Ubuntu 上使用具有 sudo 升级权限的 Ansible 安装 dotnet-ef 工具后,我遇到了这个问题。我必须为 Playbook 任务添加 become: no,然后 dotnet-ef 工具对当前用户可用。
- name: install dotnet tool dotnet-ef
command: dotnet tool install --global dotnet-ef --version {{dotnetef_version}}
become: no
有时它可能由于系统内的不同用户而发生。
因此,要解决此问题,您可以在解决方案中本地安装 dotnet-ef,而不是全局添加。
本地安装步骤。
通过 dotnet new tool-manifest 创建本地清单文件 转到 config 文件夹: cd .\.config 通过 dotnet tool install dotnet-ef --version versionNumber 安装工具。它将成功安装,并且可以在项目中访问其命令。
我有同样的问题。我通过卸载 PC 上的所有版本然后重新安装 dotnet
解决了这个问题。
我遵循了这些步骤,对我来说效果很好:
添加源:dotnet nuget add source --name nuget.org https://api.nuget.org/v3/index.json 运行安装命令行:dotnet tool install --global dotnet-ef --version 5.0.6
如果您问自己有哪些版本可用:
此页面上的版本标签:https://www.nuget.org/packages/dotnet-ef/
除此之外,正如其他人已经提到的那样:
dotnet tool install --global dotnet-ef --version 5.0.11
你可以运行这个命令
dotnet tool install dotnet-ef -g
那么一切都会很好:)