Condividi tramite


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é il TargetFramework porta automaticamente una versione del metapacchetto, le versioni saranno in conflitto in caso di differenze.

Per risolvere il problema:

  1. Quando si usa .NET Core o .NET Standard come destinazione, è consigliabile evitare riferimenti espliciti a Microsoft.NETCore.App o NETStandard.Library nel file di progetto.

  2. Se è necessaria una versione specifica del runtime quando è destinata a .NET Core, usare la <RuntimeFrameworkVersion>proprietà 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.

  3. Se è necessaria una versione specifica di NetStandard.Library quando è destinata a .NET Standard, è possibile usare la <NetStandardImplicitPackageVersion> proprietà e impostarla sulla versione necessaria.

  4. Non aggiungere o aggiornare in modo esplicito i riferimenti a Microsoft.NETCore.App o NETSTandard.Library nei progetti .NET Framework. NuGet installa automaticamente qualsiasi versione necessaria NETStandard.Library quando si usa un pacchetto NuGet basato su .NET Standard.

  5. Non specificare una versione per Microsoft.AspNetCore.App o Microsoft.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 Microsoft.NET.Sdk.Webanche . Questo problema è stato risolto in .NET Core 2.2 SDK.

  6. Se si vuole che l'avviso venga disattivato, è anche possibile disabilitarlo:

    <PackageReference Include="Microsoft.NetCore.App" Version="2.2.8" >
      <AllowExplicitVersion>true</AllowExplicitVersion>
    </PackageReference>