共用方式為


NuGet 警告 NU1510

Scenario

PackageReference System.Text.Json 將不會被剪除。 請考慮從您的相依性中移除此套件,因為它可能不需要。

Issue

已指定封裝 System.Text.Json,以透過 PrunePackageReference 功能進行剪除。 .NET SDK 通常會指定要剪除的套件清單。 因為 .NET 運行時間本身具有相同或更新版本的元件,因此不需要封裝作為直接 PackageReference。

只有當有問題的 PackageReference 可以從專案完全移除時,才會引發這個警告。

Example 1

  <PropertyGroup>
    <TargetFramework>net10.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="System.Text.Json" Version="10.0.0" />
  </ItemGroup>

Example 2

  <PropertyGroup>
    <TargetFrameworks>net9.0;net10.0</TargetFrameworks>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Condition="'$(TargetFramework)' == 'net10.0'" Include="System.Text.Json" Version="10.0.0" />
    <PackageReference Condition="'$(TargetFramework)' == 'net9.0'" Include="System.Text.Json" Version="9.0.0" />
  </ItemGroup>

您可以移除封裝的每個條件PackageReferenceSystem.Text.Json,因為封裝已經包含在其宣告之架構的個別 .NET 運行時間版本中。

Example 3

  <PropertyGroup>
    <TargetFrameworks>net9.0;net10.0</TargetFrameworks>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Condition="'$(TargetFramework)' == 'net9.0'" Include="System.Text.Json" Version="9.0.4" />
  </ItemGroup>

封裝 System.Text.Json 位於它所宣告的唯一架構的剪除範圍內。

Solution

將 PackageReference 移除為不必要的。

Note

為了方便採用 PrunePackageReference 功能,當專案以 .NET 10 架構或更新版本為目標時,預設會引發此警告。

Note

在至少其中一個架構仍然需要套件的案例中,將不會引發警告,例如 net48 在下列範例中。

  <PropertyGroup>
    <TargetFrameworks>net10.0;net48</TargetFrameworks>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="System.Text.Json" Version="9.0.7" />
  </ItemGroup>