我有一个Dotnet核心项目,我试图在其中安装Microsoft.EntityFrameworkCore.Tools.Dotnet以使用迁移。我在Mac上,所以我在使用MySql.Data.EntityFrameworkCore包。当我尝试安装命令行工具时,出现以下错误,但是如果我将软件包手动添加到csproj文件中,它将安装。但是在尝试运行dotnet ef时出现以下错误。
软件包Microsoft.EntityFrameworkCore.Tools.Dotnet
的版本无法解析。
我在.net core 1.0.4和.net core 2.0上都尝试了此操作,但得到了相同的错误。我也试图将以下内容添加到我的csproj文件中
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.Dotnet" Version="2.0.0-preview2-final" />
</ItemGroup>
我有什么想念的吗?
完整的csproj文件:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<UserSecretsId>aspnet-WebApplication-FCC62E5C-58CB-44F6-835B-E0E34F1DE6D7</UserSecretsId>
</PropertyGroup>
<ItemGroup>
<Folder Include="wwwroot\" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0-preview2-final" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.0.0-preview2-final" />
<PackageReference Include="MySql.Data.EntityFrameworkCore" Version="8.0.8-dmr" />
<PackageReference Include="MySql.Data.EntityFrameworkCore.Design" Version="8.0.8-dmr" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0-preview2-final" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ClassLibrary.Data\ClassLibrary.Data.csproj" />
</ItemGroup>
</Project>
类库csproj:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="MySql.Data.EntityFrameworkCore" Version="8.0.8-dmr" />
<PackageReference Include="MySql.Data.EntityFrameworkCore.Design" Version="8.0.8-dmr" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools.Dotnet" Version="2.0.0-preview2-final" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.Dotnet" Version="2.0.0-preview2-final" />
</ItemGroup>
</Project>
最佳答案
在类库csproj中,从包含在包中的包中删除单词Dotnet:
错误道:
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools.Dotnet" Version="2.0.0-preview2-final" />
正确的方法:
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.0.0-preview2-final" />
Microsoft.EntityFrameworkCore.Tools.Dotnet仅在DotNetCliToolReference中设置:
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.Dotnet" Version="2.0.0-preview2-final" />