PrunePackageReference privatiserar direkt beskärbara referenser

Funktionen PrunePackageReference tar automatiskt bort transitiva paket som tillhandahålls av målplattformen. Med den här ändringen markerar funktionen också direkt beskärbara PackageReference objekt med PrivateAssets=all och IncludeAssets=none attribut. Dessa attribut förhindrar att paketen visas i genererade beroendelistor för paket.

Version introducerad

.NET 10

Tidigare beteende

Tidigare, om beskärning var aktiverat, visades fortfarande direkt beskärbara PackageReference objekt i listan över genererade .nuspec-beroenden , även om paketet tillhandahölls av plattformen. (Och om projektet riktade in sig på .NET 10 kan de ha genererat en NU1510 varning.)

Överväg till exempel ett projekt med flera mål med följande konfiguration:

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

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

En sådan projektfil genererade en .nuspec-fil med beroenden för båda målramverken:

<dependencies>
  <group targetFramework=".NETFramework4.7.2">
    <dependency id="System.Text.Json" version="9.0.8" />
  </group>
  <group targetFramework="net10.0">
    <dependency id="System.Text.Json" version="9.0.8" />
  </group>
</dependencies>

Nytt beteende

Från och med .NET 10, när beskärning är aktiverat, markeras direkt beskärbara PackageReference objekt automatiskt med PrivateAssets=all och IncludeAssets=none, vilket exkluderar dem från de genererade beroendena för målramverk där de tillhandahålls av plattformen. (Men om projektet är avsett för .NET 10 eller senare får du fortfarande en NU1510 varning tills du tar bort referensen från projektet.)

Samma projektkonfiguration genererar nu en .nuspec-fil med det beskärbara beroendet borttaget från målramverket som tillhandahåller den (.NET 10):

<dependencies>
  <group targetFramework=".NETFramework4.7.2">
    <dependency id="System.Text.Json" version="9.0.8" />
  </group>
  <group targetFramework="net10.0">
  </group>
</dependencies>

Typ av icke-bakåtkompatibel ändring

Den här ändringen är en beteendeförändring.

Orsak till ändring

Den här ändringen säkerställer att paketberoenden korrekt återspeglar de faktiska kraven för varje målramverk. Det förhindrar att onödiga paketreferenser visas i genererade paket när dessa API:er redan tillhandahålls av målramverket.

  • Om du skapar ett paket och får en NU1510 varning följer du anvisningarna där.
  • Om du skapar ett paket och de genererade .nuspec-beroendena inte innehåller något refererat paket för något målramverk tar du bort referensen från projektfilen eftersom den inte behövs.
  • Om det refererade paketet visas i .nuspec-filen behövs ingen åtgärd.

Berörda API:er

Ingen.

Se även