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

Per risolvere il problema:

  1. Quando si specifica come destinazione .NET Core o .NET Standard, è 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 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.

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

  4. Non aggiungere o aggiornare in modo esplicito riferimenti a Microsoft.NETCore.App o NETSTandard.Library nei progetti .NET Framework. NuGet installa automaticamente qualsiasi versione necessaria di 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 anche Microsoft.NET.Sdk.Web. 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>