Ho un progetto core Dotnet in cui sto cercando di installare Microsoft.EntityFrameworkCore.Tools.Dotnet per utilizzare le migrazioni. Sono su un Mac, quindi sto usando il pacchetto MySql.Data.EntityFrameworkCore. Quando provo ad installare gli strumenti della riga di comando, ottengo comunque il seguente errore se aggiungo manualmente il pacchetto al file csproj che installerà. Ma ottengo il seguente errore quando provo a eseguire dotnet ef.
La versione per il pacchetto
Microsoft.EntityFrameworkCore.Tools.Dotnet
non può essere risolta.
Ho provato questo sia con .net core 1.0.4 e .net core 2.0 e ottenere lo stesso errore. Ho anche provato ad aggiungere quanto segue al mio file csproj che non aiuta
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.Dotnet" Version="2.0.0-preview2-final" />
</ItemGroup>
C'è qualcosa che mi manca?
file csproj completo:
<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>
libreria di classi 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>
Nella libreria di classi csproj Rimuovere la parola Dotnet dal pacchetto nell'include:
Strada sbagliata:
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools.Dotnet" Version="2.0.0-preview2-final" />
Giusta direzione:
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.0.0-preview2-final" />
Microsoft.EntityFrameworkCore.Tools.Dotnet è impostato solo in DotNetCliToolReference:
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.Dotnet" Version="2.0.0-preview2-final" />
Rimuovere <PackageReference>
per Microsoft.EntityFrameworkCore.Tools.Dotnet
. Dovrebbe essere elencato solo come <DotNetCliToolReference>
.