Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az alkalmazás méretének csökkentése, a csomagfüggőségek egyszerűsítése és a karbantartás egyszerűsítése érdekében a 11-es .NET kilenc Microsoft.Extensions.* kódtárat tartalmaz az alapszintű megosztott keretrendszerben. Azok a projektek, amelyek kifejezetten hivatkoznak ezekre a csomagokra, nu1510 build figyelmeztetést kapnak. A figyelmeztetést a PackageReference eltávolításával oldhatja meg. Ha a csomagok régebbi verziójától függ, a .NET 11-es verzióra való frissítés a régebbi verziók és a 11-es .NET közötti kompatibilitástörő változásokat eredményezheti.
Bevezetett verzió
.NET 11 előzetes verzió 4
Előző viselkedés
Korábban a következő Microsoft.Extensions.* kódtárak nem voltak részei a .NET megosztott keretrendszernek. (A megosztott keretrendszert a Sdk="Microsoft.NET.Sdk" használatával, vagy hasonlóképpen a többi .NET SDK bármelyikére való hivatkozással kapja meg.) Azoknál a projekteknél, amelyeknek szükségük volt ezekre, explicit PackageReference bejegyzésekre volt szükség, és az összeállítási folyamat a szerelvényeket a kimeneti mappába másolta:
- 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
Új viselkedés
A 11. .NET kezdve ez a kilenc kódtár a .NET közös alaprendszer része:
- Nincs szüksége
PackageReferenceezekhez a kódtárakhoz, ha a(z)net11.0vagy újabb verziót célozza meg. - Ha kifejezetten hivatkozik ezekre a csomagokra, a NU1510 buildre vonatkozó figyelmeztetést kap.
- Ezeket a szerelvényeket a rendszer többé nem másolja a kimeneti mappába.
- Ritkán előfordulhat, hogy az alapértelmezett betöltési csoportban lévő további API-k név- vagy típusütközéseket okoznak. Ütközés megoldásához adjon hozzá explicitebb
usingirányelveket, használjon aliast, vagy használjon teljes típusnevet.
A kompatibilitástörő változás típusa
Ez a változás viselkedésbeli változás.
A változás oka
A közös keretrendszerben gyakran használt kódtárak használata csökkenti az alkalmazások méretét, leegyszerűsíti a csomagfüggőségeket, és leegyszerűsíti a karbantartást.
Javasolt művelet
Távolítsa el az PackageReference érintett csomagokat:
Azoknál a projekteknél, amelyek csak a(z) net11.0 vagy újabb verziót célozzák meg, távolítsa el teljesen a(z) PackageReference elemet:
<!-- 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="..." />
A kód továbbra is módosítás nélkül működik – az API-k most már a futtatókörnyezet részét képezik.
Több célzott projektek esetén (például) a NU1510 nem emelhető ki, <TargetFrameworks>net10.0;net11.0</TargetFrameworks>mert a csomagra továbbra is szükség van a régebbi TFM-hez. Nincs szükség műveletre – a NuGet automatikusan kiválasztja az egyes cél-keretrendszerek megfelelő szerelvényét. Ha explicit szeretne lenni, feltételesen hozzáadhatja a hivatkozást:
<!-- 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'" />
Fordítási időbeli névütközések feloldása (ritka):
Ha fordítási hibát tapasztal, mert a kódban szereplő név ütközik az újonnan mellékelt API-k egyikével, használja az alábbi módszerek egyikét:
- Adjon hozzá egy pontosabb
usingirányelvet. - Használjon aliast
using. - Használjon teljesen minősített típusnevet.
Ha a csomagok régebbi verziójától függ:
Az olyan futásidejű hibák elkerülése érdekében, mint a MissingMethodException vagy a TypeLoadException, fordítsa újra a függő könyvtárakat és binárisokat a .NET 11 referenciaszerelvényei ellen. Ha a(z) net11.0 célozza meg, távolítsa el a(z) PackageReference elemet, majd fordítsa újra. Ha korábbi TFM-eket céloz meg, vagy több célkeretrendszert használ, frissítse a nem net11.0 célokhoz tartozó csomaghivatkozásokat az aktuális verzióra, majd fordítsa újra.
A korábbi verziók következő kompatibilitástörő változásai jelenhetnek meg a csomagok .NET 11 verziójára való frissítéskor:
Microsoft.Extensions.DependencyInjection.Abstractions
- Az ActivatorUtilities.CreateInstance következetesen viselkedik
- Az ActivatorUtilities.CreateInstance nem null szolgáltatót igényel
- A FromKeyedServicesAttribute.Key tulajdonság null értékű
- Nem kulcsolt szolgáltatás, amelyet akkor használnak, ha a kulcs nem található
- GetKeyedService és GetKeyedServices az AnyKey használatával
Microsoft.Extensions.Logging.Abstractions
Microsoft.Extensions.Hosting.Abstractions
- Nem kezelt kivételek a BackgroundService szolgáltatásból
- A BackgroundService az összes ExecuteAsync-et feladatként futtatja
- Az IHost.RunAsync és az IHost.StopAsync dobása a BackgroundService meghiúsulásakor
Érintett API-k
Nincs.