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:
- Olvassa el a RID-gráfot a gyökérkeret (Microsoft.NetCore.App) .deps.json fájljából.
- 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).
- A RID-gráfban található bejegyzéstől kezdve keresse meg az adott RID-nek megfelelő eszközöket.
- 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é.
Javasolt művelet
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.UseRidGraph
true
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>