3

我有一个使用 .NET Core 3.0 的 ASP.NET Core 3.0 项目。我最近将 VS 2019 升级到了 16.4.1 版本。

我使用 Visual Studio 中的 Web Publish 在各种环境中部署应用程序,但升级后由于 EF 迁移而失败(尝试查找 db 上下文失败):

dotnet ef dbcontext --json 失败

运行“dotnet tool restore”以使“dotnet-ef”命令可用。

我试图理解出了什么问题。

dotnet tool restore

找不到清单文件。对于搜索的位置列表,请在工具名称前指定“-d”选项。没有工具被恢复。

dotnet tool install --global dotnet-ef

工具 'dotnet-ef' 已安装。

dotnet tool list

包 ID 版本命令清单

(此列表中没有项目)

dotnet-ef --version

Entity Framework Core .NET 命令行工具 3.1.0

dotnet --version

3.1.100

我是否需要升级才能将所有内容升级到 3.1?如果可能的话,我想推迟这个(我必须在多个环境中执行此操作,并且计划在以后进行)。

注意:我也有 Visual Studio 2017,并且在配置发布配置文件时正确发现了实体框架迁移上下文。

问题:如何解决由于 dotnet ef dbcontext --json 失败而无法在 Visual Studio 2019 中列出实体框架迁移?

4

5 回答 5

2

我遇到了同样的问题(在更新了 Visual Studio 2019 之后),在我的电脑上存在这个问题,但在另一台电脑上没有。这些文件都是平等的(通过 git 检查),VS2019 在某处缓存了一些东西,这很糟糕。

1 检查默认连接字符串是否正常。

2 检查是否安装了 dotnet ef。在核心 3.1 中,您必须安装:dotnet tool install -g dotnet-ef

3 关闭VS,删除文件夹<yourproject>/Properties(如果需要,请备份),打开VS,清理解决方案并再次导入发布文件。

于 2020-05-22T09:02:48.360 回答
2

dotnet tool uninstall --global dotnet-ef

dotnet tool install --global dotnet-ef

对于 Linux 和 macOS,在 shell 的配置中添加一行:

  • bash/zsh: ( nano ./zshrc)

    export PATH="$PATH:$HOME/.dotnet/tools/"
    
  • csh/tcsh:

    set path = ($path $HOME/.dotnet/tools/)
    

来源:https ://stackoverflow.com/a/56876020/9324707

于 2020-12-10T16:27:58.553 回答
1

我有同样的问题,但不知道我必须 cd 进入“服务器”项目,然后运行dotnet tool restore​​. 这为我解决了它。

于 2020-10-02T10:18:53.640 回答
1

dotnet ef 工具不再是 .NET Core SDK 的一部分 此更改允许我们将 dotnet ef 作为常规 .NET CLI 工具提供,可以作为全局或本地工具安装。例如,能够管理迁移或脚手架 DbContext,安装 dotnet ef 作为全局工具,键入以下命令:

$ dotnet tool install --global dotnet-ef --version 3.0.0-preview4.19216.3 有关更多信息,请参阅此重大更改的详细信息。

于 2021-02-26T04:48:07.407 回答
-1

I think I got it solved. I was lacking Microsoft.EntityFrameworkCore.Design.

  1. Installed Microsoft.EntityFrameworkCore.Design 3.0.0 using NuGet
  2. Ran dotnet tool restore which was successfully this time

    dotnet tool restore

Tool 'dotnet-ef' (version '3.1.0') was restored. Available commands: dotnet-ef

于 2019-12-13T10:53:13.493 回答