Non riesco a far funzionare Microsoft.EntityFrameworkCore 2.0 con NETStandard.Library 2.0
Errore CS0433 Il tipo 'AttributeUsageAttribute' esiste in 'System.Runtime, Versione = 4.1.0.0, Culture = neutro, PublicKeyToken = b03f5f7f11d50a3a' e 'netstandard, Versione = 2.0.0.0, Cultura = neutrale, PublicKeyToken = cc7b13ffcd2ddd51' Contrived.Model .Schema D: \ Contrived \ Contrived \ Framework \ Contrived.Model.Schema \ Attributes \ EntityColumnAttribute.cs
Il mio .csproj:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup Label="Globals">
<SccProjectName>SAK</SccProjectName>
<SccProvider>SAK</SccProvider>
<SccAuxPath>SAK</SccAuxPath>
<SccLocalPath>SAK</SccLocalPath>
</PropertyGroup>
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="2.0.0" />
</ItemGroup>
<ItemGroup>
<PackageReference Update="NETStandard.Library" Version="2.0.0" />
</ItemGroup>
</Project>
Questo accade anche se creo una nuova soluzione e una libreria netstandard 2.0, quindi aggiungo entityframeworkcore 2.0
Errore CS1703 Sono stati importati più assembly con identità equivalente: 'D: \ Users \ maksymiuk_a.nuget \ packages \ netstandard.library \ 2.0.0 \ build \ netstandard2.0 \ ref \ System.Threading.Tasks.dll' e 'D : \ Users \ maksymiuk_a.nuget \ packages \ System.Threading.Tasks \ 4.3.0 \ ref \ netstandard1.3 \ System.Threading.Tasks.dll'. Rimuovi uno dei riferimenti duplicati. ClassLibrary1 D: \ Contrived \ Contrived \ ClassLibrary1 \ ClassLibrary1 \ CSC
Aggiornamento: sono stati rilasciati Visual Studio 2017 15.3 e 2.0.0 SDK . Utilizzare queste versioni per sbarazzarsi di tali conflitti.
Questo sembra essere uno dei problemi di build che si verificano quando si utilizza un mix di strumenti di anteprima e pacchetti "RTM" prima che tutte le parti siano state rilasciate.
Per ottenere il miglior supporto per 2.0.0 al momento della scrittura, effettuare una delle seguenti operazioni:
utilizzare solo la stessa versione preview2 dei pacchetti di nuget, l'SDK .NET Core installato e l'ultima anteprima di VS 2017 15.3 (15.3 Anteprima 7).
Usa la versione più recente di VS 2017 15.3 Preview (Preview 7), installa 2.0.0 (non preview2). NET Core Sdk dall'output di configurazione CI in https://dotnetcli.blob.core.windows.net/dotnet/Sdk/2.0 .0 / dotnet-sdk-2.0.0-win-x64.exe (la stessa posizione di output di compilazione viene utilizzata dalle immagini del docker di Microsoft 2.0.0)
La ragione di questo requisito è che l'SDK 2.0.0 conosce questi conflitti e taglia i riferimenti in conflitto ( System.*.dll
in questo caso) fuori dai progetti.
Questo problema può ancora verificarsi anche con DOT NET Core 2+
ed è causato quando i pacchetti a cui fai riferimento nel tuo progetto dipendono da una versione diversa dello stesso pacchetto, in particolare lo stesso spazio dei nomi.
Ci sono 2,5 soluzioni che conosco:
1) Se controlli entrambi i pacchetti, aggiornali entrambi per assicurarti che stiano usando la stessa versione di quella dipendenza (o cambia lo spazio dei nomi di una delle versioni di quella dipendenza, come: Your.Thing.v3.Models
)
2) Se riesci a trovare uno o entrambi quei pacchetti su un sito open source come GitHub
, puoi scaricarli e aggiornarli per usare la stessa versione di quella dipendenza (o la cosa dello spazio dei nomi dall'opzione 1, sopra)
2.5) Se non controlli o non hai accesso al sorgente di quei pacchetti, e mi rendo conto che questa non è davvero una soluzione ... (da qui il .5), allora l'ultima opzione è smettere di usare uno di questi Pacchetti.
Se c'è un altro modo, mi piacerebbe saperlo.