Sdílet prostřednictvím


Chyby inicializace rozhraní .NET Framework: Správa uživatelského prostředí

Poznámka:

Tento článek je specifický pro rozhraní .NET Framework. Nevztahuje se na novější implementace .NET, včetně .NET 6 a novějších verzí.

Aktivační systém CLR (Common Language Runtime) určuje verzi modulu CLR, která se použije ke spuštění kódu spravované aplikace. V některých případech nemusí aktivační systém najít verzi modulu CLR, která se má načíst. K této situaci obvykle dochází v případě, že aplikace vyžaduje verzi CLR, která je neplatná nebo není nainstalovaná v daném počítači. Pokud požadovaná verze nebyla nalezena, aktivační systém CLR vrátí kód chyby HRESULT z funkce nebo rozhraní, které bylo voláno, a může zobrazit chybovou zprávu uživateli, který aplikaci spouští. Tento článek obsahuje seznam kódů HRESULT a vysvětluje, jak můžete zabránit zobrazení chybové zprávy.

MODUL CLR poskytuje infrastrukturu protokolování, která vám pomůže ladit problémy s aktivací modulu CLR, jak je popsáno v tématu Postupy: Ladění problémů s aktivací MODULU CLR. Tato infrastruktura by neměla být zaměňována s protokoly vazeb sestavení, které jsou zcela odlišné.

Kódy HRESULT aktivace CLR

Aktivační rozhraní API CLR vrací kódy HRESULT, které hlásí výsledek operace aktivace hostiteli. Hostitelé CLR by se před pokračováním v dalších operacích měli vždy poradit s těmito vrácenými hodnotami.

  • CLR_E_SHIM_RUNTIMELOAD

  • CLR_E_SHIM_RUNTIMEEXPORT

  • CLR_E_SHIM_INSTALLROOT

  • CLR_E_SHIM_INSTALLCOMP

  • CLR_E_SHIM_LEGACYRUNTIMEALREADYBOUND

  • CLR_E_SHIM_SHUTDOWNINPROGRESS

Uživatelské rozhraní pro chyby inicializace

Pokud aktivační systém CLR nemůže načíst správnou verzi modulu runtime, který aplikace vyžaduje, zobrazí uživatelům chybovou zprávu s informací, že jejich počítač není správně nakonfigurovaný pro spuštění aplikace, a poskytuje jim příležitost k nápravě situace. V této situaci se obvykle zobrazí následující chybová zpráva. Uživatel může zvolit Ano a přejít na web Společnosti Microsoft, kde si může stáhnout správnou verzi rozhraní .NET Framework pro aplikaci.

Dialogové okno Chyba inicializace rozhraní .NET Framework

Řešení chyby inicializace

Jako vývojář máte různé možnosti pro řízení chybové zprávy inicializace rozhraní .NET Framework. Příznak rozhraní API můžete například použít k tomu, aby se zpráva zobrazovala, jak je popsáno v další části. Stále ale musíte vyřešit problém, který zabránil vaší aplikaci v načtení požadovaného modulu runtime. V opačném případě se vaše aplikace nemusí vůbec spouštět nebo nemusí být k dispozici některé funkce.

Pokud chcete vyřešit základní problémy a poskytnout nejlepší uživatelské prostředí (méně chybových zpráv), doporučujeme následující:

  • Pro aplikace .NET Framework 3.5 (a starší): Nakonfigurujte aplikaci tak, aby podporovala rozhraní .NET Framework 4 nebo novější verze (viz pokyny).

  • Pro aplikace rozhraní .NET Framework 4: Nainstalujte distribuovatelný balíček .NET Framework 4 jako součást instalace aplikace. Viz Průvodce nasazením pro vývojáře.

Řízení chybové zprávy

Zobrazení chybové zprávy s oznámením, že požadovaná verze rozhraní .NET Framework nebyla nalezena, lze zobrazit jako užitečnou službu nebo menší nepříjemnost pro uživatele. V obou případech můžete toto uživatelské rozhraní řídit předáním příznaků do aktivačních rozhraní API.

ICLRMetaHostPolicy ::GetRequestedRuntime metoda přijímá METAHOST_POLICY_FLAGS člen výčtu jako vstup. Příznak METAHOST_POLICY_SHOW_ERROR_DIALOG pro vyžádání chybové zprávy můžete zahrnout v případě, že požadovaná verze modulu CLR nebyla nalezena. Ve výchozím nastavení se chybová zpráva nezobrazí. (ICLRMetaHost::GetRuntime metoda nepřijímá tento příznak a neposkytuje žádný jiný způsob zobrazení chybové zprávy.)

Systém Windows poskytuje funkci SetErrorMode , kterou můžete použít k deklaraci, zda chcete, aby se chybové zprávy zobrazovaly jako výsledek kódu, který se spouští v rámci procesu. Můžete zadat příznak SEM_FAILCRITICALERRORS, který zabrání zobrazení chybové zprávy.

V některýchscénářch SEM_FAILCRITICALERRORS ch Pokud máte například nativní komponentu MODELU COM, která je hostitelem MODULU CLR a která je hostovaná v procesu, kde je nastavená SEM_FAILCRITICALERRORS, můžete příznak přepsat v závislosti na dopadu zobrazování chybových zpráv v rámci daného procesu aplikace. V takovém případě můžete k přepsání SEM_FAILCRITICALERRORS použít jeden z následujících příznaků:

Zásady uživatelského rozhraní pro hostitele poskytované clr

MODUL CLR obsahuje sadu hostitelů pro různé scénáře a tito hostitelé zobrazí chybovou zprávu, když narazí na problémy s načtením požadované verze modulu runtime. Následující tabulka obsahuje seznam hostitelů a jejich zásad chybové zprávy.

Hostitel CLR Popis Zásady chybových zpráv Může být chybová zpráva zakázaná?
Spravovaný hostitel EXE Spustí spravované prostředí EXE. Zobrazuje se v případě chybějící verze rozhraní .NET Framework. No
Spravovaný hostitel modelu COM Načte spravované komponenty MODELU COM do procesu. Zobrazuje se v případě chybějící verze rozhraní .NET Framework. Ano, nastavením příznaku SEM_FAILCRITICALERRORS
Hostitel ClickOnce Spustí aplikace ClickOnce. Zobrazuje se v případě chybějící verze rozhraní .NET Framework počínaje rozhraním .NET Framework 4.5. No
Hostitel XBAP Spustí aplikace WPF XBAP. Zobrazuje se v případě chybějící verze rozhraní .NET Framework počínaje rozhraním .NET Framework 4.5. No

Chování a uživatelské rozhraní Windows 8

Aktivační systém CLR poskytuje stejné chování a uživatelské rozhraní v systému Windows 8 jako v jiných verzích operačního systému Windows, s výjimkou případů, kdy dochází k problémům při načítání CLR 2.0. Windows 8 obsahuje rozhraní .NET Framework 4.5, které používá CLR 4.5. Windows 8 však neobsahuje rozhraní .NET Framework 2.0, 3.0 nebo 3.5, které všechny používají CLR 2.0. V důsledku toho aplikace, které jsou závislé na CLR 2.0, ve výchozím nastavení neběží ve Windows 8. Místo toho zobrazí následující dialogové okno, které uživatelům umožní nainstalovat rozhraní .NET Framework 3.5. Uživatelé můžou také povolit rozhraní .NET Framework 3.5 v Ovládací panely. Obě možnosti jsou popsány v článku Instalace rozhraní .NET Framework 3.5 ve Windows 11, Windows 10, Windows 8.1 a Windows 8.

Dialogové okno pro instalaci verze 3.5 ve Windows 8

Poznámka:

Rozhraní .NET Framework 4.5 nahrazuje rozhraní .NET Framework 4 (CLR 4) v počítači uživatele. Proto aplikace rozhraní .NET Framework 4 běží bezproblémově bez zobrazení tohoto dialogového okna ve Windows 8.

Při instalaci rozhraní .NET Framework 3.5 mohou uživatelé spouštět aplikace, které závisí na rozhraní .NET Framework 2.0, 3.0 nebo 3.5 na svých počítačích s Windows 8. Můžou také spouštět aplikace .NET Framework 1.0 a 1.1 za předpokladu, že tyto aplikace nejsou explicitně nakonfigurované tak, aby běžely pouze v rozhraní .NET Framework 1.0 nebo 1.1. Viz Migrace z rozhraní .NET Framework 1.1.

Od rozhraní .NET Framework 4.5 jsme vylepšili protokolování aktivace CLR tak, aby zahrnovalo položky protokolu, které zaznamenávají, kdy a proč se zobrazí chybová zpráva inicializace. Další informace naleznete v tématu Postupy: Ladění problémů s aktivací CLR.

Viz také