Sommige Microsoft.Extensions-pakketten opgenomen in het gedeelde framework

Om de toepassingsgrootte te verkleinen, pakketafhankelijkheden te vereenvoudigen en onderhoud te stroomlijnen, bevat .NET 11 negen Microsoft.Extensions.* bibliotheken in het gedeelde basisframework. Projecten die expliciet naar deze pakketten verwijzen, ontvangen buildwaarschuwing NU1510. U kunt de waarschuwing oplossen door de PackageReference te verwijderen. Als u afhankelijk bent van een oudere versie van deze pakketten, kan een upgrade naar de versie .NET 11 fouten veroorzaken die zijn geïntroduceerd tussen oudere versies en .NET 11.

Geïntroduceerde versie

.NET 11 preview 4

Vorig gedrag

Voorheen maakten de volgende Microsoft.Extensions.*-bibliotheken geen deel uit van het .NET gedeelde framework. (U krijgt het gedeelde framework door Sdk="Microsoft.NET.Sdk" te gebruiken, of door op vergelijkbare wijze te verwijzen naar een van de andere .NET SDK's.) Projecten die deze nodig hadden, vereisten expliciete PackageReference-vermeldingen en tijdens het buildproces werden de assemblies naar de uitvoermap gekopieerd:

Nieuw gedrag

Vanaf .NET 11 maken deze negen bibliotheken deel uit van het gedeelde .NET basisframework:

  • U hebt geen PackageReference nodig voor deze bibliotheken als u net11.0 of hoger als doelversie hebt.
  • Als u expliciet naar deze pakketten verwijst, ontvangt u de buildwaarschuwing NU1510.
  • Deze assemblies worden niet meer naar de uitvoermap gekopieerd.
  • In zeldzame gevallen kunnen de extra API's in de standaardlaadset naam- of typeconflicten veroorzaken. Als u een conflict wilt oplossen, voegt u meer expliciete using instructies toe, gebruikt u een alias of gebruikt u een volledig gekwalificeerde typenaam.

Type van brekende verandering

Deze wijziging is een gedragswijziging.

Reden voor wijziging

Het opnemen van deze veelgebruikte bibliotheken in het gedeelde framework vermindert de toepassingsgrootte, vereenvoudigt pakketafhankelijkheden en stroomlijnt het onderhoud.

Verwijder het PackageReference voor elk betrokken pakket:

Voor projecten die alleen zijn gericht op net11.0 of hoger, verwijder het PackageReference volledig:

<!-- Remove entries like these from your .csproj when targeting net11.0 only: -->
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="..." />
<PackageReference Include="Microsoft.Extensions.Options" Version="..." />

Uw code blijft werken zonder wijzigingen. De API's maken nu deel uit van de runtime.

Voor projecten met meerdere doelgroepen (bijvoorbeeld) <TargetFrameworks>net10.0;net11.0</TargetFrameworks>wordt NU1510 niet gegenereerd omdat het pakket nog steeds vereist is voor de oudere TFM. Er is geen actie vereist. NuGet selecteert automatisch de juiste assembly voor elk doelframework. Als u expliciet wilt zijn, kunt u de verwijzing voorwaardelijk opnemen:

<!-- Keep the reference only for TFMs that don't include it in the shared framework: -->
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="..." Condition="'$(TargetFramework)' != 'net11.0'" />

Conflicten met naam van compileertijd oplossen (zeldzaam):

Als er een compilatiefout optreedt omdat een naam in uw code conflicteert met een van de zojuist opgenomen API's, gebruikt u een van de volgende methoden:

  • Voeg een specifiekere using richtlijn toe.
  • Gebruik een using alias.
  • Gebruik een volledig gekwalificeerde typenaam.

Als u afhankelijk bent van een oudere versie van deze pakketten:

Als u runtimefouten wilt voorkomen, zoals MissingMethodException of TypeLoadException, moet u afhankelijke bibliotheken of binaire bestanden opnieuw compileren voor de .NET 11-referentieassembly's. Als u zich op net11.0 richt, verwijdert u PackageReference en bouwt u opnieuw. Als u zich op eerdere TFM's richt of op meerdere doelen, werk dan de pakketverwijzingen voor de niet-net11.0doelen bij naar de huidige versie en compileer vervolgens opnieuw.

De volgende belangrijke wijzigingen van eerdere versies kunnen optreden bij het upgraden naar de .NET 11 versies van deze pakketten:

Microsoft. Extensions.DependencyInjection.Abstractions

Microsoft.Extensions.Logging.Abstractions

Microsoft.Extensions.Hosting.Abstractions

Betreffende API's

Geen.