Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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:
- Microsoft.Extensions.Caching.Abstractions
- Microsoft.Extensions.Configuration.Abstractions
- Microsoft. Extensions.DependencyInjection.Abstractions
- Microsoft.Extensions.Diagnostics.Abstractions
- Microsoft. Extensions.FileProviders.Abstractions
- Microsoft.Extensions.Hosting.Abstractions
- Microsoft.Extensions.Logging.Abstractions
- Microsoft.Extensions.Options
- Microsoft. Extensions.Primitives
Nieuw gedrag
Vanaf .NET 11 maken deze negen bibliotheken deel uit van het gedeelde .NET basisframework:
- U hebt geen
PackageReferencenodig voor deze bibliotheken als unet11.0of 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
usinginstructies 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.
Aanbevolen actie
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
usingrichtlijn toe. - Gebruik een
usingalias. - 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
- ActivatorUtilities.CreateInstance gedraagt zich consistent
- ActivatorUtilities.CreateInstance vereist een niet-null-provider
- Eigenschap FromKeyedServicesAttribute.Key kan null zijn
- Service zonder sleutel die wordt gebruikt als geen service met sleutel is gevonden
- GetKeyedService en GetKeyedServices met AnyKey
Microsoft.Extensions.Logging.Abstractions
Microsoft.Extensions.Hosting.Abstractions
- Niet-afgehandelde uitzonderingen van een BackgroundService
- BackgroundService voert alle executeAsync uit als een taak
- IHost.RunAsync en IHost.StopAsync gooien wanneer een BackgroundService mislukt
Betreffende API's
Geen.