Udostępnij przez


Ostrzeżenie narzędzia NuGet NU1510

Scenario

Plik PackageReference System.Text.Json nie zostanie oczyszczony. Rozważ usunięcie tego pakietu z zależności, ponieważ jest to prawdopodobnie niepotrzebne.

Issue

To ostrzeżenie jest wywoływane w wyniku oczyszczania grafu zależności NuGet i wskazuje, że w przeciwnym razie pakiet możliwy do oczyszczenia został przywrócony z powodu bezpośredniego PackageReference. Nazwany pakiet można przycinać w przypadku usunięcia bezpośredniego PackageReference , ponieważ docelowy zestaw SDK platformy .NET udostępnia tę samą wersję lub nowszą wersję tego zestawu.

To ostrzeżenie dotyczy tylko pakietów zarejestrowanych do oczyszczania za pomocą funkcji PrunePackageReference . Jest on zgłaszany tylko wtedy, gdy PackageReference pytanie może zostać całkowicie usunięte z projektu.

Przykład 1

Gdy docelowy zestaw SDK platformy .NET zawiera równoważną wersję, rozwiązanie konfliktów zależności wybiera zestaw dołączony do zestawu SDK:

  <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>

Przykład 2

Gdy docelowy zestaw SDK platformy .NET zawiera równoważną wersję dla wielu obiektów docelowych platformy, rozwiązanie konfliktów zależności wybiera odpowiedni zestaw dołączony do zestawu SDK dla każdego elementu docelowego:

  <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

Usuń niepotrzebny PackageReferenceelement .

Note

Począwszy od platformy .NET 10, PrunePackageReference funkcja jest domyślnie włączona dla wszystkich projektów przeznaczonych dla platformy .NET 10 lub nowszej. Ostrzeżenie jest zgłaszane tylko podczas oczyszczania dotyczy wszystkich celów środowiska uruchomieniowego:

  <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>