当我想向我的项目添加迁移时,我收到以下错误:
dotnet:找不到匹配命令“dotnet-ef”
的可执行文件
为了解决这个问题,我添加了以下包,但我仍然遇到同样的错误。
Microsoft.EntityFrameworkCore.Design(2.0.0)
Microsoft.EntityFrameworkCore.Tools.DotNet(2.0.0)
我找到了一些解决方案,但这些解决方案基于.net-core-1
,而.net-core-2
我们没有project.json
文件。
更新
这是我的.csproj文件:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Hosting" Version="2.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="2.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.0.0" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
</ItemGroup>
<ItemGroup>
<Reference Include="Microsoft.Extensions.Configuration">
<HintPath>C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.extensions.configuration\2.0.0\lib\netstandard2.0\Microsoft.Extensions.Configuration.dll</HintPath>
</Reference>
</ItemGroup>
</Project>
答案 0 :(得分:12)
要使dotnet ef
生效,您需要向DotNetCliToolReference
添加.csproj
元素,如下所示:
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
这需要住在ItemGroup
内,例如:
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
</ItemGroup>
您还需要确保从与dotnet ef
文件相同的位置运行.csproj
。
答案 1 :(得分:3)
答案 2 :(得分:0)
我知道你们中的一些人会在[找不到可执行的匹配命令“dotnet - ”]部分标题中找到这个问题。就我而言,它是:
No executable found matching command “dotnet-My”
而且......结果我的应用程序名称是“我的应用程序”。确保程序集名称中没有空格。我将其更改为“MyApp”并正确加载。