.NET-keretrendszer inicializálási hibák: A felhasználói élmény kezelése
A közös nyelvi futtatókörnyezet (CLR) aktiválási rendszere határozza meg a CLR azon verzióját, amelyet a felügyelt alkalmazáskód futtatásához használunk. Bizonyos esetekben előfordulhat, hogy az aktiválási rendszer nem találja a CLR betöltendő verzióját. Ez a helyzet általában akkor fordul elő, ha egy alkalmazás olyan CLR-verziót igényel, amely érvénytelen vagy nincs telepítve egy adott számítógépen. Ha a kért verzió nem található, a CLR aktiválási rendszere egy HRESULT hibakódot ad vissza a hívott függvényből vagy felületről, és hibaüzenetet jeleníthet meg az alkalmazást futtató felhasználónak. Ez a cikk felsorolja a HRESULT-kódokat, és ismerteti, hogyan akadályozhatja meg a hibaüzenet megjelenítését.
A CLR naplózási infrastruktúrát biztosít a CLR-aktiválási problémák hibakereséséhez a következő útmutatóban leírtak szerint: A CLR aktiválási problémáinak hibakeresése. Ezt az infrastruktúrát nem szabad összekeverni a szerelvénykötési naplókkal, amelyek teljesen eltérőek.
CLR-aktiválásI HRESULT-kódok
A CLR aktiválási API-k HRESULT-kódokat adnak vissza az aktiválási művelet eredményének a gazdagépnek való jelentéséhez. A CLR-gazdagépeknek mindig ezeket a visszatérési értékeket kell megtekinteniük, mielőtt további műveleteket hajtanak végre.
CLR_E_SHIM_RUNTIMELOAD
CLR_E_SHIM_RUNTIM Enterprise kiadás XPORT
CLR_E_SHIM_INSTALLROOT
CLR_E_SHIM_INSTALLCOMP
CLR_E_SHIM_LEGACYRUNTIMEALREADYBOUND
CLR_E_SHIM_SHUTDOWNINPROGRESS
Felhasználói felület inicializálási hibákhoz
Ha a CLR-aktiválási rendszer nem tudja betölteni az alkalmazás által igényelt futtatókörnyezet megfelelő verzióját, hibaüzenetet jelenít meg a felhasználóknak, amely tájékoztatja őket arról, hogy a számítógép nincs megfelelően konfigurálva az alkalmazás futtatására, és lehetőséget biztosít számukra a helyzet megoldására. Ebben a helyzetben általában az alábbi hibaüzenet jelenik meg. A felhasználó az Igen lehetőséget választva megnyithat egy Microsoft-webhelyet, ahol letöltheti az alkalmazás megfelelő .NET-keretrendszer verzióját.
Az inicializálási hiba elhárítása
Fejlesztőként számos lehetősége van a .NET-keretrendszer inicializálási hibaüzenet vezérlésére. Használhat például egy API-jelzőt az üzenet megjelenítésének megakadályozására, ahogyan az a következő szakaszban is szerepel. Azonban továbbra is meg kell oldania azt a problémát, amely miatt az alkalmazás nem tudta betölteni a kért futtatókörnyezetet. Ellenkező esetben előfordulhat, hogy az alkalmazás egyáltalán nem fut, vagy egyes funkciók nem érhetők el.
Az alapul szolgáló problémák megoldásához és a legjobb felhasználói élmény biztosításához (kevesebb hibaüzenet) a következőket javasoljuk:
.NET-keretrendszer 3.5-ös (és korábbi) alkalmazások esetén: Konfigurálja az alkalmazást a .NET-keretrendszer 4 vagy újabb verzióinak támogatásához (lásd az utasításokat).
.NET-keretrendszer 4 alkalmazás esetén: Telepítse a .NET-keretrendszer 4 terjeszthető csomagot az alkalmazásbeállítás részeként. Lásd: Üzembe helyezési útmutató fejlesztőknek.
A hibaüzenet szabályozása
Ha hibaüzenetet jelenít meg arról, hogy a kért .NET-keretrendszer verzió nem található, hasznos szolgáltatásként vagy kisebb bosszúságként tekinthető meg a felhasználók számára. Mindkét esetben vezérelheti ezt a felhasználói felületet úgy, hogy jelölőket ad át az aktiválási API-knak.
Az ICLRMetaHostPolicy::GetRequestedRuntime metódus bemenetként elfogad egy METAHOST_POLICY_FLAGS enumerálási tagot. Ha a CLR kért verziója nem található, a METAHOST_POLICY_SHOW_ERROR_DIALOG jelzőt is hozzáadhatja a hibaüzenet kéréséhez. Alapértelmezés szerint a hibaüzenet nem jelenik meg. (A ICLRMetaHost::A GetRuntime metódus nem fogadja el ezt a jelzőt, és nem biztosít más módot a hibaüzenet megjelenítésére.)
A Windows egy SetErrorMode függvényt biztosít, amellyel deklarálhatja, hogy a hibaüzenetek a folyamaton belül futó kód eredményeként jelenjenek-e meg. Megadhatja a Standard kiadás M_FAILCRITICALERRORS jelzőt, hogy a hibaüzenet ne jelenjen meg.
Bizonyos esetekben azonban fontos felülírni az alkalmazásfolyamat által beállított Standard kiadás M_FAILCRITICALERRORS beállítást. Ha például rendelkezik egy natív COM-összetevővel, amely a CLR-t üzemelteti, és amely egy olyan folyamatban fut, amelyben Standard kiadás M_FAILCRITICALERRORS van beállítva, akkor érdemes lehet felülbírálni a jelzőt attól függően, hogy milyen hatással van a hibaüzenetek megjelenítése az adott alkalmazásfolyamaton belül. Ebben az esetben az alábbi jelzők egyikével bírálhatja felül a Standard kiadás M_FAILCRITICALERRORS:
Használja a METAHOST_POLICY_IGNORE_ERROR_MODE az ICLRMetaHostPolicy::GetRequestedRuntime metódussal.
Használja RUNTIME_INFO_IGNORE_ERROR_MODE a GetRequestedRuntimeInfo függvénnyel.
A CLR által biztosított gazdagépek felhasználói felületi szabályzata
A CLR számos gazdagépet tartalmaz különböző forgatókönyvekhez, és ezek a gazdagépek hibaüzenetet jelenítenek meg, amikor problémákba ütköznek a futtatókörnyezet szükséges verziójának betöltésekor. Az alábbi táblázat felsorolja a gazdagépeket és azok hibaüzenet-szabályzatait.
CLR-gazdagép | Leírás | Hibaüzenet-szabályzat | Le lehet tiltani a hibaüzenetet? |
---|---|---|---|
Felügyelt EXE-gazdagép | Elindítja a felügyelt EXE-eket. | Hiányzó .NET-keretrendszer verzió esetén jelenik meg | Nem |
Felügyelt COM-gazdagép | A felügyelt COM-összetevők betöltése folyamatba. | Hiányzó .NET-keretrendszer verzió esetén jelenik meg | Igen, a Standard kiadás M_FAILCRITICALERRORS jelző beállításával |
ClickOnce gazdagép | Elindítja a ClickOnce-alkalmazásokat. | Hiányzó .NET-keretrendszer verzió esetén jelenik meg, kezdve a .NET-keretrendszer 4.5-ös verziójával | Nem |
XBAP-gazdagép | WPF XBAP-alkalmazásokat indít el. | Hiányzó .NET-keretrendszer verzió esetén jelenik meg, kezdve a .NET-keretrendszer 4.5-ös verziójával | Nem |
A Windows 8 működése és felhasználói felülete
A CLR aktiválási rendszer ugyanazt a viselkedést és felhasználói felületet biztosítja a Windows 8 rendszeren, mint a Windows operációs rendszer más verzióiban, kivéve, ha problémákat tapasztal a CLR 2.0 betöltésekor. A Windows 8 tartalmazza .NET-keretrendszer 4.5-öt, amely a CLR 4.5-öt használja. A Windows 8 azonban nem tartalmazza a .NET-keretrendszer 2.0-s, 3.0-s vagy 3.5-ös verziót, amelyek mindegyike a CLR 2.0-t használja. Ennek eredményeképpen a CLR 2.0-ra támaszkodó alkalmazások alapértelmezés szerint nem futnak Windows 8 rendszeren. Ehelyett a következő párbeszédpanelt jelenítik meg, amely lehetővé teszi a felhasználók számára a .NET-keretrendszer 3.5 telepítését. A felhasználók a .NET-keretrendszer 3.5-öt is engedélyezhetik Vezérlőpult. Mindkét lehetőségről a .NET-keretrendszer 3.5 telepítése Windows 11, Windows 10, Windows 8.1 és Windows 8 rendszereken című cikkben talál.
Feljegyzés
A .NET-keretrendszer 4.5 lecseréli a .NET-keretrendszer 4-et (CLR 4) a felhasználó számítógépén. Ezért .NET-keretrendszer 4 alkalmazás zökkenőmentesen, a párbeszédpanel megjelenítése nélkül fut Windows 8-on.
A .NET-keretrendszer 3.5 telepítésekor a felhasználók windows 8 rendszerű számítógépükön futtathatnak .NET-keretrendszer 2.0-s, 3.0-s vagy 3.5-ös verziótól függő alkalmazásokat. Az 1.0-s és az 1.1-.NET-keretrendszer is futtathatók, feltéve, hogy ezek az alkalmazások nincsenek explicit módon konfigurálva, hogy csak az 1.0-s vagy az 1.1-.NET-keretrendszer fussanak. Lásd: Migrálás a .NET-keretrendszer 1.1-ből.
A 4.5-ös .NET-keretrendszer kezdve a CLR aktiválási naplózása javult, így olyan naplóbejegyzések is megjelentek, amelyek rögzítik, hogy mikor és miért jelenik meg az inicializálási hibaüzenet. További információ : A CLR aktiválási problémáinak hibakeresése.
Lásd még
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: