NETSDK1071: packageReference con versione esplicita a un metapacchetto che verrebbe incluso nel framework.
Questo articolo si applica a: ✔️ .NET 5.0.100 SDK e versioni successive
Quando .NET SDK genera un avviso NETSDK1071, suggerisce che potrebbe verificarsi un conflitto di versione in futuro tra la versione di un metapacchetto specificato in packageReference e la versione di tale metapacchetto come riferimento implicito tramite una proprietà TargetFramework:
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
Poiché TargetFramework
inserisce automaticamente una versione del metapacchetto, le versioni entreranno in conflitto in caso di differenze.
Per risolvere il problema:
Quando si specifica come destinazione .NET Core o .NET Standard, è consigliabile evitare riferimenti espliciti a
Microsoft.NETCore.App
oNETStandard.Library
nel file di progetto.Se è necessaria una versione specifica del runtime quando è destinata a .NET Core, usare la proprietà
<RuntimeFrameworkVersion>
anziché fare riferimento direttamente al metapacchetto. Ad esempio, questo problema può verificarsi se si usano distribuzioni autonome e si necessita di una patch specifica del runtime 1.0.0 LTS.Se è necessaria una versione specifica di
NetStandard.Library
quando è destinata a .NET Standard, è possibile usare la proprietà<NetStandardImplicitPackageVersion>
e impostarla sulla versione necessaria.Non aggiungere o aggiornare in modo esplicito riferimenti a
Microsoft.NETCore.App
oNETSTandard.Library
nei progetti .NET Framework. NuGet installa automaticamente qualsiasi versione necessaria diNETStandard.Library
quando si usa un pacchetto NuGet basato su .NET Standard.Non specificare una versione per
Microsoft.AspNetCore.App
oMicrosoft.AspNetCore.All
quando si usa .NET Core 2.1+, perché .NET SDK seleziona automaticamente la versione appropriata. (Nota: funziona solo quando la destinazione è .NET Core 2.1 se il progetto usa ancheMicrosoft.NET.Sdk.Web
. Questo problema è stato risolto in .NET Core 2.2 SDK).Se si vuole che l'avviso venga disattivato, è anche possibile disabilitarlo:
<PackageReference Include="Microsoft.NetCore.App" Version="2.2.8" > <AllowExplicitVersion>true</AllowExplicitVersion> </PackageReference>