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.
Megjegyzés:
Ez a cikk a .NET-keretrendszerre vonatkozik. Ez nem vonatkozik a .NET újabb implementációira, beleértve a .NET 6-os és újabb verzióit.
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_RUNTIMEEXPORT
CLR_E_SHIM_INSTALLROOT
CLR_E_SHIM_INSTALLCOMP
CLR_E_SHIM_LEGACYRUNTIMEALREADYBOUND
CLR_E_SHIM_SHUTDOWNINPROGRESS
Inicializálási hibák kezelőfelülete
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áshoz megfelelő .NET-keretrendszer-verzió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ének 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-ös vagy újabb verzióinak támogatásához (lásd az utasításokat).
.NET Framework 4-alkalmazások esetén: Telepítse a .NET Framework 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ója 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. (Az ICLRMetaHost::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 SEM_FAILCRITICALERRORS jelzőt, hogy megakadályozza a hibaüzenet megjelenítését.
Bizonyos esetekben azonban fontos felülbírálni az alkalmazásfolyamat által beállított SEM_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 SEM_FAILCRITICALERRORS van beállítva, é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 jelölők egyikével bírálhatja felül a SEM_FAILCRITICALERRORS:
Használja a METAHOST_POLICY_IGNORE_ERROR_MODE-ot az ICLRMetaHostPolicy::GetRequestedRuntime metódussal.
Használja RUNTIME_INFO_IGNORE_ERROR_MODE a GetRequestedRuntimeInfo függvénnyel.
A CLR által biztosított gazdagépekhez tartozó UI-k szabályzata
A CLR számos kiszolgálót tartalmaz különféle forgatókönyvekhez, és ezek a kiszolgálók hibaüzenetet jelenítenek meg, amikor problémát észlelnek a futtatókörnyezet szükséges verziójának betöltésekor. Az alábbi táblázat felsorolja a szervereket és azok hibaüzenet-kezeléseit.
CLR-gazdagép | Leírás | Hibaüzenet-szabályzat | Le lehet tiltani a hibaüzenetet? |
---|---|---|---|
Felügyelt EXE-kiszolgáló | Elindítja a felügyelt EXE-eket. | Hiányzó .NET-keretrendszer-verzió esetén jelenik meg | Nem |
Felügyelt COM-gazdagép | Felügyelt COM-összetevők betöltése egy folyamatba. | Hiányzó .NET-keretrendszer-verzió esetén jelenik meg | Igen, a SEM_FAILCRITICALERRORS jelző beállításával |
ClickOnce hosztgép | Elindítja a ClickOnce-alkalmazásokat. | A .NET-keretrendszer hiányzó verziója esetén jelenik meg, a .NET-keretrendszer 4.5-ös verziójától kezdve | Nem |
XBAP-gazdagép | WPF XBAP-alkalmazásokat indít el. | A .NET-keretrendszer hiányzó verziója esetén jelenik meg, a .NET-keretrendszer 4.5-ös verziójától kezdve | 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 a .NET Framework 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ójá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 az alábbi 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 Vezérlőpulton is engedélyezhetik a .NET-keretrendszer 3.5-öt. Mindkét lehetőséget a .NET-keretrendszer 3.5 telepítése Windows 11, Windows 10, Windows 8.1 és Windows 8 rendszereken című cikk ismerteti.
Megjegyzés:
A .NET-keretrendszer 4.5 a felhasználó számítógépén található .NET-keretrendszer 4 (CLR 4) helyére lép. Ezért a .NET Framework 4-alkalmazások zökkenőmentesen, a párbeszédpanel megjelenítése nélkül futnak a Windows 8-on.
A .NET-keretrendszer 3.5 telepítésekor a felhasználók a .NET-keretrendszer 2.0-s, 3.0-s vagy 3.5-ös verziójától függő alkalmazásokat futtathatnak Windows 8 rendszerű számítógépükön. A .NET-keretrendszer 1.0- és 1.1-alkalmazásokat is futtathatnak, feltéve, hogy ezek az alkalmazások nincsenek explicit módon konfigurálva, hogy csak a .NET-keretrendszer 1.0-s vagy 1.1-s verzióján fussanak. Lásd: Migrálás a .NET-keretrendszer 1.1-ből.
A .NET-keretrendszer 4.5-ös verziótól kezdve a CLR aktiválási naplózása javult, és olyan naplóbejegyzéseket tartalmaz, 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.