无法在.NET Core 3.0中创建初始迁移

时间:2019-07-16 23:57:19

标签: c# asp.net-core .net-core entity-framework-core .net-core-3.0

我正在追踪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。直接从项目中引用该软件包以选择其他版本。
  网页->
  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)

14 个答案:

答案 0 :(得分:15)

编辑:如果您正在使用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

答案 1 :(得分:5)

全局工具可以安装在默认目录中或 具体位置。默认目录为:

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

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

如果您尝试运行全局工具,请检查计算机上的PATH环境变量是否包含安装全局工具的路径,以及可执行文件是否在该路径中。

Troubleshoot .NET Core tool usage issues

答案 2 :(得分:4)

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

dotnet工具安装--global dotnet-ef --version 3.1.3

答案 3 :(得分:4)

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

如果您要设置此存储库

dotnet new tool-manifest

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

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

答案 4 :(得分:2)

请参阅announcement中的ASP.NET Core 3 Preview 4,它说明该工具已不再内置并且需要显式安装:

  

dotnet ef工具不再是.NET Core SDK的一部分

     

此更改使我们可以将dotnet ef作为常规.NET CLI工具发布,可以将其安装为全局或本地工具。例如,为了能够管理DbContext的迁移或搭建支架,请安装dotnet ef作为全局工具,键入以下命令:

dotnet tool install -g dotnet-ef --version 3.0.0-*

还需要安装其他软件包。这些链接指向目前的最新版本,但随着时间的推移可能会过时。

Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.Design
Install-Package Microsoft.EntityFrameworkCore.Tools

答案 5 :(得分:2)

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

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

步骤:

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

对于最新版本:

dotnet tool install --global dotnet-ef

对于特定版本:

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

答案 6 :(得分:1)

我在 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

答案 7 :(得分:0)

我有同样的问题。我解决了,卸载了PC中的所有de版本,然后重新安装了dotnet。

答案 8 :(得分:0)

如果您在Linux上使用快照包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"

答案 9 :(得分:0)

对我来说,在我关闭Visual Studio并再次打开它之后,问题已解决

答案 10 :(得分:0)

适用于在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

答案 11 :(得分:0)

我按照以下步骤操作,对我来说效果很好:

  1. 添加来源:

    dotnet nuget add source --name nuget.org https://api.nuget.org/v3/index.json
    
  2. 运行安装命令行:

    dotnet tool install --global dotnet-ef --version 5.0.6
    

答案 12 :(得分:0)

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

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

本地安装步骤。

  1. 通过以下方式创建本地清单文件 dotnet new tool-manifest

  2. 转到 config 文件夹:

    cd .\.config

  3. 通过以下方式安装工具 dotnet tool install dotnet-ef --version versionNumber。它将成功安装,并且可以在项目中访问其命令。

答案 13 :(得分:0)

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

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

之后所有的执行都完成了

dotnet tool run dotnet-ef

dotnet dotnet-ef