Kon*_*ten 44 c# entity-framework-core .net-core asp.net-core .net-core-3.0
我正在关注文档以创建初始迁移。执行时dotnet
,我得到了帮助部分,这意味着PATH可以正常工作。
然后,我尝试从控制台窗口的文档中执行以下命令:
dotnet ef migrations add InitialCreate
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Run Code Online (Sandbox Code Playgroud)Could not execute because the specified command or file was not found. Possible reasons for this include: * You misspelled a built-in dotnet command. * You intended to execute a .NET Core program, but dotnet-ef does not exist. * You intended to run a global tool, but a dotnet-prefixed executable with this name could not be found on the PATH.
- 自从复制命令以来,我排除了第一项。
- 由于安装了软件包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)
Kir*_*kin 71
请参阅有关ASP.NET Core 3 Preview 4 的公告,该公告说明该工具已不再内置,需要显式安装:
dotnet ef工具不再是.NET Core SDK的一部分
此更改使我们可以
dotnet ef
作为常规.NET CLI工具发布,可以将其安装为全局或本地工具。例如,为了能够管理迁移或搭建aDbContext
,请dotnet ef
输入以下命令作为全局工具安装:
dotnet tool install --global dotnet-ef --version 3.0.0
Run Code Online (Sandbox Code Playgroud)
更改原因在docs中进行了解释:
为什么
此更改使我们能够
dotnet ef
在NuGet上作为常规.NET CLI工具进行分发和更新,这与EF Core 3.0始终也作为NuGet软件包分发的事实一致。
此外,您可能需要向项目中添加以下NuGet软件包:
Ama*_*ndo 34
我通过使用以下命令在本地安装dotnet-f 工具解决了这个问题。
如果您正在设置此存储库
dotnet new tool-manifest
dotnet tool install --local dotnet-ef --version 5.0.6
Run Code Online (Sandbox Code Playgroud)
然后使用dotnet dotnet-ef而不是dotnet-ef。
Nic*_*cer 22
如果您使用 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
Run Code Online (Sandbox Code Playgroud)
还将您的dotnet ef
命令更改为dotnet-ef
Gam*_*ier 11
全局工具可以安装在默认目录或特定位置。默认目录为:
Linux/macOS ---> $HOME/.dotnet/tools
Windows ---> %USERPROFILE%\.dotnet\tools
如果您尝试运行全局工具,请检查计算机上的 PATH 环境变量是否包含安装全局工具的路径以及可执行文件是否在该路径中。
小智 9
这对我在 Ubuntu 中的 Visual Studio Code 上有用
dotnet tool install --global dotnet-ef
dotnet tool restore
Run Code Online (Sandbox Code Playgroud)
之后所有的执行都像这样完成
dotnet tool run dotnet-ef
Run Code Online (Sandbox Code Playgroud)
或者
dotnet dotnet-ef
Run Code Online (Sandbox Code Playgroud)
小智 5
以管理员身份运行 PowerShell 或命令提示符并运行以下命令。
dotnet tool install --global dotnet-ef --version 3.1.3
Run Code Online (Sandbox Code Playgroud)
小智 5
对于在MinGW MSYS上使用 .NET Core CLI 的每个人:
安装后使用
dotnet tool install --global dotnet-ef
Run Code Online (Sandbox Code Playgroud)
将此行添加到bashrc文件(C:\msys64\home\username\
- .bashrc (位置取决于您的设置)
export PATH=$PATH:/c/Users/username/.dotnet/tools
Run Code Online (Sandbox Code Playgroud)
小智 5
有时可能会由于系统内的不同用户而发生。
因此,要解决该问题,您可以在解决方案中本地安装 dotnet-ef,而不是全局添加它。
本地安装步骤。
通过创建本地清单文件
dotnet new tool-manifest
转到config
文件夹:
cd .\.config
通过安装该工具
dotnet tool install dotnet-ef --version versionNumber
。它将成功安装,并且可以在项目中访问其命令。
归档时间: |
|
查看次数: |
11124 次 |
最近记录: |