NuGet Uyarısı NU1510

Senaryo 1

PackageReference System.Text.Json ayıklaması yapılmaz. Bu paket otomatik olarak kullanılabilir ve açıkça başvurulması gerekmez. PackageReference öğesini kaldırma

Issue

Bu uyarı, NuGet bağımlılık grafiği ayıklama işleminin bir sonucu olarak tetiklenir ve doğrudan PackageReferencebir nedeniyle başka bir şekilde kurtarılabilir paketin geri yüklendiğini gösterir. Hedeflenen .NET SDK'sı bu derlemenin aynı sürümünü veya üstünü sağladığından, doğrudan PackageReference kaldırılırsa adlandırılmış paket ayıklaması yapılabilir.

Bu uyarı yalnızca PrunePackageReference özelliği aracılığıyla ayıklama için kaydedilen paketleri etkiler. Yalnızca söz konusu projeden tamamen kaldırılabilir olduğunda PackageReferenceoluşturulur.

Örnek 1

Hedeflenen .NET SDK'sı eşdeğer bir sürüm içerdiğinde bağımlılık çakışması çözümlemesi SDK paketli derlemeyi seçer:

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

Örnek 2

Hedeflenen .NET SDK'sı birden çok çerçeve hedefi için eşdeğer bir sürüm içerdiğinde, bağımlılık çakışması çözümlemesi her hedef için uygun SDK paketlenmiş derlemeyi seçer:

  <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

Gereksiz PackageReferenceöğesini kaldırın.

Senaryo 2

PackageReference Microsoft. Extensions.Caching.Memory ayıklaması yapılmaz. Bu paket otomatik olarak kullanılabilir ve açıkça başvurulması gerekmez. PackageReference öğesini kaldırma

Issue

Ayıklama için kullanılan paketlerin listesi, geçerli projenin doğrudan FrameworkReference öğeleri tarafından belirlenir. FrameworkReference öğeler geçişli. Ancak, geçerli proje aracılığıyla ProjectReferencebir çerçeve başvurusu devraldığında ayıklama, paketleri kaldırmak için bu geçişli çerçeve başvuruyu kullanmaz. Bu paketin derleme zamanı çakışması çözümü tarafından kaldırılacağını unutmayın.

Example

Bu örnekte Library.csprojMicrosoft.AspNetCore.App ve Consumer.csproj başvuruları Library.csproj. içinde Consumer.csprojdoğrudan FrameworkReference olmadan NuGet paketin budanabilir olduğunu belirleyemez. Sonuç olarak, Microsoft.Extensions.Caching.Memory tüketici projesinde ayıklanabilir olarak kabul edilmez.

  <!-- Library.csproj -->
  <Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
      <TargetFramework>net10.0</TargetFramework>
    </PropertyGroup>

    <ItemGroup>
      <FrameworkReference Include="Microsoft.AspNetCore.App" />
    </ItemGroup>
  </Project>
  <!-- Consumer.csproj -->
  <Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
      <TargetFramework>net10.0</TargetFramework>
    </PropertyGroup>

    <ItemGroup>
      <ProjectReference Include="..\Library\Library.csproj" />
      <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="8.0.0" />
    </ItemGroup>
  </Project>

öğesini FrameworkReference doğrudan öğesine Consumer.csprojekleyin. NuGet daha sonra paylaşılan çerçeve tarafından Microsoft.Extensions.Caching.Memory sağlandığını belirleyebilir. Gereksiz doğrudan paket başvurusu için NU1510'a yükseltir.

  <ItemGroup>
    <ProjectReference Include="..\Library\Library.csproj" />
    <FrameworkReference Include="Microsoft.AspNetCore.App" />
    <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="8.0.0" />
  </ItemGroup>

Solution

Eşleşeni FrameworkReference doğrudan geçerli projeye ekleyin. Ardından gereksiz PackageReferenceöğesini kaldırın.

Note

.NET 10'la başlayarak, PrunePackageReference özellik .NET 10 veya üzerini hedefleyen tüm projeler için varsayılan olarak etkinleştirilir. Uyarı yalnızca ayıklama tüm çalışma zamanı hedeflerine uygulandığında tetiklenir:

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