NuGet figyelmeztetés NU1510

Scenario

A PackageReference System.Text.Json nem lesz metszve. Fontolja meg a csomag eltávolítását a függőségekből, mivel valószínűleg szükségtelen.

Issue

Ez a figyelmeztetés a NuGet függőségi gráfjának metszése miatt jelenik meg, és azt jelzi, hogy egy egyébként metszhető csomag egy közvetlen PackageReference. A névvel ellátott csomag metszhető, ha a közvetlen PackageReference el lett távolítva, mivel a célzott .NET SDK ugyanazt a verziót vagy magasabb verziót biztosítja a szerelvényhez.

Ez a figyelmeztetés csak a PrunePackageReference szolgáltatáson keresztül történő metszésre regisztrált csomagokat érinti. Ez csak akkor merül fel, ha a PackageReference szóban forgó teljes mértékben eltávolítható a projektből.

1. példa

Ha a célzott .NET SDK egyenértékű verziót tartalmaz, a függőségi ütközés feloldása kiválasztja az SDK-csomagban lévő szerelvényt:

  <PropertyGroup>
    <!-- 'System.Text.Json' is SDK-bundled in 'net10.0' -->
    <TargetFramework>net10.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <!-- The assembly provided by this reference will not be used -->
    <PackageReference Include="System.Text.Json" Version="10.0.0" />
  </ItemGroup>

2. példa

Ha a célzott .NET SDK több keretrendszer-célhoz is tartalmaz egy egyenértékű verziót, a függőségi ütközések feloldása minden célhoz kiválasztja a megfelelő SDK-csomaggal rendelkező szerelvényt:

  <PropertyGroup>
    <!-- 'System.Text.Json' is SDK-bundled in both TFMs -->
    <TargetFrameworks>net9.0;net10.0</TargetFrameworks>
  </PropertyGroup>

  <ItemGroup>
    <!-- Neither of the assemblies provided by these references will be used -->
    <PackageReference Include="System.Text.Json" Version="10.0.0" Condition="'$(TargetFramework)' == 'net10.0'"/>
    <PackageReference Include="System.Text.Json" Version="9.0.4" Condition="'$(TargetFramework)' == 'net9.0'"/>
  </ItemGroup>

Solution

Távolítsa el a szükségtelent PackageReference.

Note

A .NET 10-től kezdődően a PrunePackageReference funkció alapértelmezés szerint engedélyezve van minden olyan projekt esetében, amely a .NET 10-et vagy újabb verziót célozza. A figyelmeztetés csak akkor jelenik meg, ha a metszés az összes futtatókörnyezeti célra vonatkozik:

  <PropertyGroup>
    <!-- 'System.Text.Json' is not SDK-bundled in 'net48' -->
    <TargetFrameworks>net10.0;net48</TargetFrameworks>
  </PropertyGroup>

  <ItemGroup>
    <!-- This reference is needed in 'net48' - NU1510 is not raised -->
    <PackageReference Include="System.Text.Json" Version="9.0.7" />
  </ItemGroup>