A megosztott keretrendszer részét képező Microsoft.Extensions-csomagok némelyike

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:

Ú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 PackageReference ezekhez a kódtárakhoz, ha a(z) net11.0 vagy ú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 using irá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.

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 using irá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

Microsoft.Extensions.Logging.Abstractions

Microsoft.Extensions.Hosting.Abstractions

Érintett API-k

Nincs.