VS for Mac更新后dotnet ef命令不起作用

时间:2019-12-10 21:49:40

标签: visual-studio-mac entity-framework-core-2.2

我已经将VS for Mac与EF Core 2.2一起使用了一段时间,一切都进行得很好。今天,我更新了Mac版VS,因为它实际上已经过时了,更新后我无法再运行dotnet ef命令:

  

由于找不到指定的命令或文件而无法执行。
  可能的原因包括:
    *您拼错了内置dotnet命令。
    *您打算执行.NET Core程序,但dotnet-ef不存在。
    *您打算运行一个全局工具,但是在PATH上找不到具有该名称的dotnet前缀可执行文件。

请注意,这是.NET Core 2.2和EF Core 2.2,而不是3.0。我在网上阅读的所有内容都是特定于3.0的,因此有人可以指导我如何使此命令最终生效吗?这是我已经尝试过的一些东西:

  • 擦除软件包并重新安装
  • 运行dotnet restore
  • 明确添加Microsoft.EntityFrameworkCore.Design程序包
  • 明确添加Microsoft.EntityFrameworkCore.Tools程序包
  • 明确重新安装Microsoft.EntityFrameworkCore
  • 重新启动VS for Mac
  • 重新启动Mac本身

3 个答案:

答案 0 :(得分:1)

也有同样的问题,您不必卸载v3.0。最终发现dotnet ef不再是.netcore SDK的一部分。

您将需要为所需的特定版本安装ef工具(在我的情况下为2.2)。在终端上运行以下命令:

dotnet tool install --global --version 2.2 dotnet-ef

请注意,我指定了全局,也可以指定本地。

您应该获得包含有关如何将其添加到个人资料并最终运行的一些信息的输出:

zsh -l

并导出到PATH:

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

有关更多信息:

https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet

Breaking changes in dotnet-ef

答案 1 :(得分:1)

对于那些在切换到zsh之后(例如,在升级到macOS Catalina之后)有此问题的用户:zsh无法识别全局安装工具的默认路径,现在需要引用个人资料中的相关路径(.zshrc)。 这可以通过运行以下几行来完成:

# Add .NET Core SDK global tools/packages
export PATH=$HOME/.dotnet/tools:$PATH"

https://github.com/dotnet/cli/issues/9321

中进一步了解为何与bash不同

答案 2 :(得分:0)

弄清楚了。当我更新VS for Mac时,它安装了.NETCore SDK v3.0,因此,每次我运行dotnet命令时,它都使用版本3可执行文件。删除该SDK版本后(按照这些说明https://docs.microsoft.com/en-us/dotnet/core/versions/remove-runtime-sdk-versions?tabs=macos#uninstalling-net-core),它现在正在为该项目使用正确的版本,并且dotnet ef命令再次正常工作