Поделиться через


Предупреждение NuGet NU1510

Scenario

PackageReference System.Text.Json не будет обрезано. Рекомендуется удалить этот пакет из зависимостей, так как это, скорее всего, не требуется.

Issue

Это предупреждение возникает в результате обрезки графа зависимостей NuGet и указывает на то, что в противном случае вырезаемый пакет был восстановлен из-за прямого PackageReference. Именованный пакет можно удалить, если прямой PackageReference удаляется, так как целевой пакет SDK для .NET предоставляет ту же версию или более позднюю версию этой сборки.

Это предупреждение влияет только на пакеты, зарегистрированные для обрезки с помощью функции PrunePackageReference . Возникает только то, когда PackageReference вопрос может быть полностью удален из проекта.

Пример 1

Если целевой пакет SDK для .NET включает эквивалентную версию, разрешение конфликтов зависимостей выбирает сборку, связанную с пакетом 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>

Пример 2

Если целевой пакет SDK для .NET включает эквивалентную версию для нескольких целевых объектов платформы, разрешение конфликтов зависимостей выбирает соответствующую сборку, связанную с пакетом SDK для каждого целевого объекта:

  <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

Удалите ненужные PackageReference.

Note

Начиная с .NET 10 PrunePackageReference функция включена по умолчанию для всех проектов, предназначенных для .NET 10 или более поздней версии. Предупреждение возникает только при применении обрезки ко всем целевым объектам среды выполнения:

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