Delen via


PrunePackageReference herprivateert directe prunable-verwijzingen

De functie PrunePackageReference verwijdert automatisch transitieve pakketten die worden geleverd door het doelplatform. Met deze wijziging markeert de functie ook direct prunable PackageReference items met PrivateAssets=all en IncludeAssets=none kenmerken. Deze kenmerken voorkomen dat de pakketten worden weergegeven in gegenereerde afhankelijkheidslijsten voor pakketten.

Versie geïntroduceerd

.NET 10

Vorig gedrag

Voorheen, als snoeien was ingeschakeld, verschenen direct snoeibare PackageReference items nog steeds in de gegenereerde .nuspec afhankelijkhedenlijst, zelfs als het pakket door het platform werd geleverd. (En als uw project is gericht op .NET 10, hebben ze mogelijk een NU1510 waarschuwing gegenereerd.)

Denk bijvoorbeeld aan een project voor meerdere doelgroepen met de volgende configuratie:

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

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

Een dergelijk projectbestand heeft een .nuspec-bestand gegenereerd met afhankelijkheden voor beide doelframeworks:

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

Nieuw gedrag

Vanaf .NET 10 worden, wanneer het uitsnoeien is ingeschakeld, direct prunebare PackageReference-items automatisch gemarkeerd met PrivateAssets=all en IncludeAssets=none, zodat ze worden uitgesloten van de gegenereerde afhankelijkheden voor doelframeworks waar ze door het platform worden geleverd. (Als uw project echter is gericht op .NET 10 of hoger, krijgt u nog steeds een NU1510 waarschuwing totdat u de verwijzing uit uw project verwijdert.)

Dezelfde projectconfiguratie genereert nu een .nuspec-bestand met de prunable-afhankelijkheid verwijderd uit het doelframework dat het biedt (.NET 10):

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

Type wijziging die fouten veroorzaken

Deze wijziging is een gedragswijziging.

Reden voor wijziging

Deze wijziging zorgt ervoor dat pakketafhankelijkheden nauwkeurig overeenkomen met de werkelijke vereisten voor elk doelframework. Het voorkomt dat onnodige pakketverwijzingen worden weergegeven in gegenereerde pakketten wanneer deze API's al worden geleverd door het doelframework.

  • Als u een pakket maakt en een NU1510 waarschuwing krijgt, volgt u de instructies daar.
  • Als u een pakket maakt en de gegenereerde nuspec-afhankelijkheden geen pakket waarnaar wordt verwezen voor een doelframework, verwijdert u de verwijzing uit het projectbestand omdat dit niet nodig is.
  • Als het pakket waarnaar wordt verwezen in het .nuspec-bestand wordt weergegeven, is er geen actie nodig.

Betrokken API's

Geen.

Zie ook