Megosztás a következőn keresztül:


A gazdagép a RID-specifikus eszközöket határozza meg

Futtatókörnyezet-azonosítóval (RID) rendelkező alkalmazások futtatásakor a gazdagép határozza meg, hogy mely eszközök relevánsak ahhoz a platformhoz, amelyen fut. Ez az alkalmazásra és a használt feloldási logikára AssemblyDependencyResolveris vonatkozik.

Korábban a gazdagép megpróbálta kiszámolni a RID-et futásidőben, majd a RID-gráfban megállapította, hogy mely RID-specifikus objektumok egyeztek meg vagy kompatibilisek a kiszámított RID-sel. Most az alapértelmezett viselkedés nem számítja ki a RID-t, és nem használja a RID-gráfot. Ehelyett a gazdagép a futtatókörnyezet felépítése alapján egy ismert RID-listára támaszkodik.

Előző viselkedés

Korábban a RID-specifikus eszközök kiválasztásának folyamata a következő volt:

  1. Olvassa el a RID-gráfot a gyökérkeret (Microsoft.NetCore.App) .deps.json fájljából.
  2. Futtassa ki az aktuális RID-t futásidőben, és próbáljon meg egy bejegyzést keresni a RID-gráfban. Ha nem létezik, ellenőrizze, hogy van-e tartalék RID (a fordításkor a gazdagépbe van beépítve).
  3. A RID-gráfban található bejegyzéstől kezdve keresse meg az adott RID-nek megfelelő eszközöket.
  4. Folytassa a RID-gráf bejegyzésében található RID-k listáját, amíg meg nem talál egy objektumegyezést, vagy a lista véget nem ér.

Ha a RID-gráf nem rendelkezik a kiszámított RID-ről vagy a tartalék RID-ről, a RID-objektumok nem oldódtak fel megfelelően.

Új viselkedés

Alapértelmezés szerint a folyamat már nem a RID-gráfra támaszkodik. Ehelyett a gazdagép felépítése alapján keres egy ismert hordozható RID-készletet. Példa:

Linux

  • linux-x64
  • linux
  • unix-x64
  • Unix
  • bármelyik

Windows

  • win-x64
  • Nyer
  • bármelyik

macOS

  • osx-x64
  • Osx
  • unix-x64
  • Unix

A gazdagép vagy a futtatókörnyezet nem hordozható buildjei esetén a build egy nem hordozható RID-t is beállíthat, amelyet először ellenőriztek.

Bevezetett verzió

.NET 8 Előzetes verzió 5

A kompatibilitástörő változás típusa

Ez a változás befolyásolhatja a bináris kompatibilitást, és viselkedésbeli változás is.

A változás oka

A RID-gráf fenntartása és megértése költséges volt, ezért magának a .NET-nek érzékenynek kellett lennie a disztribúcióra. A .NET csapata és a közösség nem triviális mennyiségű időt tölt a gráf frissítésével és az ilyen frissítések korábbi kiadásokba való visszaküldésével. A hosszú távú cél a RID-diagram frissítése, olvasásának leállítása és végül eltávolítása. Ez a törés változás egy lépés a cél felé.

Használjon hordozható RID-ket, például linux, linux-musl, osxés win. Speciális használati esetek esetén használhat API-kat, például NativeLibrary.SetDllImportResolver(Assembly, DllImportResolver)AssemblyLoadContext.ResolvingUnmanagedDll egyéni betöltési logikát.

Ha vissza kell térnie az előző viselkedéshez, állítsa a visszafelé kompatibilitási kapcsolót System.Runtime.Loader.UseRidGraphtrue a runtimeconfig.json fájlban. A kapcsoló true beállítása arra utasítja a gazdagépet, hogy használja a RID-diagram olvasásának korábbi viselkedését. Másik lehetőségként beállíthatja az UseRidGraph MSBuild tulajdonságot true a projektfájlban. Példa:

<PropertyGroup>
  <UseRidGraph>true</UseRidGraph>
</PropertyGroup>

Érintett API-k

Lásd még