Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Aby se zmenšila velikost aplikace, zjednodušila se závislosti balíčků a zjednodušila údržba, .NET 11 zahrnuje devět knihoven Microsoft.Extensions.* v základní sdílené rozhraní. Projekty, které explicitně odkazují na tyto balíčky, obdrží při sestavení upozornění NU1510. Upozornění můžete vyřešit odebráním souboru PackageReference. Pokud závisíte na starší verzi těchto balíčků, upgrade na verzi .NET 11 může odhalit zásadní změny zavedené mezi staršími verzemi a .NET 11.
Verze byla představena
.NET 11 Preview 4
Předchozí chování
Dříve nebyly následující knihovny Microsoft.Extensions.* součástí sdílené architektury .NET. (Sdílenou architekturu získáte pomocí Sdk="Microsoft.NET.Sdk" nebo podobným odkazem na některou z jiných sad SDK .NET.) Projekty, které je potřebovaly, vyžadovaly explicitní PackageReference položky a proces sestavení zkopíroval sestavení do výstupní složky:
- 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
Nové chování
Od .NET 11 jsou tyto devět knihoven součástí základní sdílené architektury .NET:
- Pro tyto knihovny nepotřebujete
PackageReference, pokud cílíte nanet11.0nebo novější verzi. - Pokud na tyto balíčky odkazujete explicitně, zobrazí se upozornění na sestavení NU1510.
- Tato sestavení se už nekopírují do výstupní složky.
- Ve výjimečných případech můžou další rozhraní API ve výchozí sadě zatížení způsobit konflikty názvů nebo typů. Chcete-li vyřešit konflikt, přidejte další explicitní
usingdirektivy, použijte alias nebo použijte plně kvalifikovaný název typu.
Typ zásadní změny
Tato změna je změna chování.
Důvod změny
Zahrnutím těchto běžně používaných knihoven do sdílené architektury se zmenšuje velikost aplikace, zjednodušuje závislosti balíčků a zjednodušuje údržbu.
Doporučená akce
Odeberte PackageReference pro všechny dotčené balíčky:
U projektů, které cílí pouze na net11.0 nebo novější verze, zcela odeberte PackageReference:
<!-- 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="..." />
Váš kód bude dál fungovat beze změny – rozhraní API jsou teď součástí modulu runtime.
U projektů s více cílovými rámci (například <TargetFrameworks>net10.0;net11.0</TargetFrameworks>) se NU1510 nevyvolá, protože je balíček stále vyžadován pro starší TFM. Nevyžaduje se žádná akce – NuGet automaticky vybere odpovídající sestavení pro každou cílovou architekturu. Pokud chcete být explicitní, můžete podmíněně zahrnout odkaz:
<!-- 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'" />
Vyřešte konflikty názvů při kompilaci (vzácné):
Pokud dojde k chybě kompilace, protože název v kódu je v konfliktu s jedním z nově zahrnutých rozhraní API, použijte jeden z těchto přístupů:
- Přidejte konkrétnější
usingdirektivu. -
usingPoužijte alias. - Použijte plně kvalifikovaný název typu.
Pokud závisíte na starší verzi těchto balíčků:
Aby nedocházelo k chybám za běhu, jako jsou MissingMethodException nebo TypeLoadException, překompilujte všechny závislé knihovny nebo binární soubory proti referenčním sestavením .NET 11. Pokud cílíte na net11.0, odeberte PackageReference a znovu sestavte. Pokud cílíte na starší verze TFM nebo na více cílů, aktualizujte reference na balíčky pro cíle jiné než net11.0 na aktuální verzi a poté znovu zkompilujte.
Při upgradu na .NET 11 těchto balíčků se můžou zobrazit následující zásadní změny z předchozích verzí:
Microsoft. Extensions.DependencyInjection.Abstractions
- ActivatorUtilities.CreateInstance se chová konzistentně
- ActivatorUtilities.CreateInstance vyžaduje jiného poskytovatele než null.
- Vlastnost FromKeyedServicesAttribute.Key je nullovatelná
- Služba bez klíče použitá při nenalezeném klíči
- GetKeyedService a GetKeyedServices pomocí AnyKey
Microsoft.Extensions.Logging.Abstractions
Microsoft.Extensions.Hosting.Abstractions
- Neošetřené výjimky ze služby BackgroundService
- BackgroundService spouští všechny executeAsync jako úlohu.
- Vyvolání IHost.RunAsync a IHost.StopAsync v případě selhání služby BackgroundService
Ovlivněná rozhraní API
Žádné.