ChatGPT解决这个技术问题 Extra ChatGPT

我关注 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)

@petermortensen 看起来有人的编辑破坏了文本流。我会回滚,如果你愿意,欢迎你再试一次。

K
Kirk Larkin

请参阅 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


P
Peter Mortensen

如果您使用 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
2
2 revs, 2 users 78%

我通过使用以下命令在本地安装 dotnet-f 工具解决了这个问题。

如果您正在设置此存储库

dotnet new tool-manifest

dotnet tool install --local dotnet-ef --version 5.0.6

然后使用 dotnet dotnet-ef 而不是 dotnet-ef。


请注意,这个问题有点过时了,在创建它时,考虑的版本是 .NET Core 3.x,而您的解决方案建议使用 .NET Core 5(或者更确切地说是 .NET 5 或本周 MS 称之为的任何版本)。我仍然感谢您的回答(因此赞成),我希望它留下来。只是为未来发表评论,草率的读者。
2022 年的这个答案对我有用
G
Gambitier

全局工具可以安装在默认目录或特定位置。默认目录为:Linux/macOS ---> $HOME/.dotnet/tools Windows ---> %USERPROFILE%\.dotnet\tools 如果您尝试运行全局工具,请检查 PATH 环境变量是否打开您的机器包含安装全局工具的路径,并且可执行文件位于该路径中。

Troubleshoot .NET Core tool usage issues


这是我的问题,当我通过“dotnet tool install --global dotnet-ef”在MacOS上安装时,我收到提示关闭并重新打开终端窗口,以便新配置生效,但实际上默认安装文件夹$ HOME/.net/tools 尚未添加到 PATH 变量中。
我很高兴它帮助了你:)
P
Peter Mortensen

对于在 MinGW MSYS 上使用 .NET Core CLI 的所有人:

安装后使用

dotnet tool install --global dotnet-ef

将此行添加到 bashrc 文件(C:\msys64\home\username\ - .bashrc(位置取决于您的设置)

export PATH=$PATH:/c/Users/username/.dotnet/tools

这个答案没有解决 OP 的问题。请考虑回答一般性问题,同时介绍解决问题的具体方法。
OP没有解释它的环境。 “控制台窗口”可以使用许多环境。
这也适用于 Ubuntu。我很惊讶这在任何地方都没有记录
P
Peter Mortensen

以管理员身份运行 PowerShell 或命令提示符并运行以下命令。

dotnet tool install --global dotnet-ef --version 3.1.3

P
Prabhakar

这将适用于我在 Ubuntu 中的 Visual Studio 代码

dotnet tool install --global dotnet-ef
dotnet tool restore

之后,所有的执行都像

dotnet tool run dotnet-ef

或者

dotnet dotnet-ef

P
Peter Mortensen

如果您在 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"

“/等”是什么意思? et cetera?还是目录 / etc?或者是其他东西?无论如何,你能详细说明一下吗?
P
Peter Mortensen

原因是 - dotnet ef 工具不再是 ASP.NET Core 3.0 中 .NET Core SDK 的一部分。

解决方案:将 dotnet ef 安装为全局工具

脚步:

在项目根目录中以管理员身份运行 PowerShell 或命令提示符 运行以下命令。

对于最新版本:

dotnet 工具安装 --global dotnet-ef

对于特定版本:

dotnet tool install --global dotnet-ef --version <>


我真的很震惊,这个小问题引起了如此多的关注和兴趣。大约 2 年前有人问过这个问题(事实上,三个 C# 版本也是如此)。声誉得分是最高的,超过 250 次投票和 50 次收藏。虽然我喜欢这一点并感谢新的贡献(例如你的贡献,因此 +1 很好),但我不禁想知道我做了什么让这个问题如此受欢迎。你的想法是什么?
@KonradViltersten 我非常同意你的看法。但是开发人员仍然面临这样的小问题。
P
Peter Mortensen

在 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

它应该去哪里?例如,一个文件?文件的名称是什么?或者是其他东西?
P
Peter Mortensen

有时它可能由于系统内的不同用户而发生。

因此,要解决此问题,您可以在解决方案中本地安装 dotnet-ef,而不是全局添加。

本地安装步骤。

通过 dotnet new tool-manifest 创建本地清单文件 转到 config 文件夹: cd .\.config 通过 dotnet tool install dotnet-ef --version versionNumber 安装工具。它将成功安装,并且可以在项目中访问其命令。


我建议您在发布自己的答案之前检查现有答案。该问题是由于版本的早期阶段造成的(检查发布日期)。
感谢您提供的信息,但这个问题最近发生在我使用 .net 5 时,这是我找到的唯一解决方案,所以它可能对某人有所帮助。
P
Peter Mortensen

我有同样的问题。我通过卸载 PC 上的所有版本然后重新安装 dotnet 解决了这个问题。


更适合作为评论。应该解释如何解决以及为什么使用资源
P
Peter Mortensen

我遵循了这些步骤,对我来说效果很好:

添加源:dotnet nuget add source --name nuget.org https://api.nuget.org/v3/index.json 运行安装命令行:dotnet tool install --global dotnet-ef --version 5.0.6


C
CodingYourLife

如果您问自己有哪些版本可用:

此页面上的版本标签https://www.nuget.org/packages/dotnet-ef/

除此之外,正如其他人已经提到的那样:

dotnet tool install --global dotnet-ef --version 5.0.11

n
navid faridi

你可以运行这个命令

dotnet tool install dotnet-ef -g

那么一切都会很好:)


请不要重复现有的答案。它只会增加噪音。

关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅