Fuslogvw.exe (prohlížeč protokolu vazby sestavení)

Nástroj Assembly Binding Log Viewer zobrazuje podrobnosti o vazbách sestavení. Tyto informace vám pomohou diagnostikovat, proč rozhraní .NET Framework nemůže najít sestavení v době běhu. Tyto chyby jsou obvykle výsledkem nasazení sestavení na nesprávné místo, neplatné nativní bitové kopie nebo neshody čísel verzí nebo jazykových verzí. Chyba modulu CLR (Common Language Runtime) při hledání sestavení TypeLoadException se ve vaší aplikaci obvykle zobrazí jako .

Důležité

Nástroj fuslogvw.exe je nutné spustit s oprávněními správce.

Tento nástroj je automaticky nainstalován se sadou Visual Studio. Pokud chcete nástroj spustit, použijte Visual Studio Developer Command Prompt nebo Visual Studio Developer PowerShell s přihlašovacími údaji správce.

Na příkazovém řádku zadejte následující příkaz:

fuslogvw

Prohlížeč zobrazí záznam pro každou nezdařenou vazbu sestavení. Při každém selhání prohlížeč popisuje:

  • aplikace, která vazbu iniciovala
  • sestavení, pro které se vazba nachází, včetně názvu, verze, jazykové verze a veřejného klíče
  • datum a čas selhání

Postupy

Změna zobrazení umístění protokolu

  1. Výběrem tlačítka Výchozí zobrazíte chyby vazby pro všechny typy aplikací. Položky protokolu jsou ve výchozím nastavení uloženy na disku do mezipaměti rozhraní wininet v adresářích jednotlivých uživatelů.

  2. Výběrem tlačítka Vlastní zobrazíte chyby vazby ve vlastním adresáři, který zadáte. Vlastní umístění, kam má modul runtime ukládat protokoly, musíte zadat nastavením vlastního umístění protokolu v dialogovém Nastavení protokolu na platný název adresáře. Tento adresář by měl být prázdný a měl by obsahovat pouze soubory, které generuje modul runtime. Pokud obsahuje spustitelný soubor, který generuje chybu do protokolu, tato chyba nebude protokolována, protože se nástroj pokusí vytvořit adresář se stejným názvem jako tento spustitelný soubor. Kromě toho se nezdaří pokus o spuštění spustitelného souboru z umístění protokolu.

    Poznámka

    Výchozí umístění vazby je vhodnější než vlastní umístění vazby. Modul runtime ukládá výchozí umístění vazby do mezipaměti wininet, a proto ho automaticky vyčistí. Pokud zadáte vlastní umístění vazby, zodpovídáte za jeho vyčištění.

Zobrazení podrobností o konkrétním selhání

  1. V prohlížeči vyberte název aplikace požadovaného záznamu.

  2. Klikněte na tlačítko Zobrazit protokol. Záznam lze vybrat také dvojitým kliknutím.

    Nástroj zobrazí následující podrobnosti o vybrané chybě vazby:

    • Konkrétní důvod selhání vazby, například „soubor nebyl nalezen“ nebo „neshoda verzí“.

    • Informace o aplikaci, která iniciovala tuto vazbu, včetně jejího názvu, kořenového adresáře aplikace (AppBase) a popisu soukromé cesty hledání, pokud existuje.

    • Identitu sestavení, které tento nástroj hledá.

    • Popis všech zásad aplikace, vydavatele nebo správce, které byly použity.

    • Určuje, zda bylo sestavení nalezeno v globální mezipaměti sestavení (GAC).

    • Seznam všech zjišťovaných adres URL.

Následující ukázka položky protokolu zobrazuje detailní informace o selhání vazby sestavení.

*** Assembly Binder Log Entry  (3/5/2007 @ 12:54:20 PM) ***

The operation failed.
Bind result: hr = 0x80070002. The system cannot find the file specified.

Assembly manager loaded from:  C:\WINNT\Microsoft.NET\Framework\v2.0.50727\fusion.dll
Running under executable  C:\Program Files\Microsoft.NET\FrameworkSDK\Samples\Tutorials\resourcesandlocalization\graphic\cs\graphicfailtest.exe
--- A detailed error log follows.

=== Pre-bind state information ===
LOG: DisplayName = graphicfailtest.resources, Version=0.0.0.0, Culture=en-US, PublicKeyToken=null
 (Fully-specified)
LOG: Appbase = C:\Program Files\Microsoft.NET\FrameworkSDK\Samples\Tutorials\resourcesandlocalization\graphic\cs\
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = NULL
Calling assembly : graphicfailtest, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null.
===

LOG: Processing DEVPATH.
LOG: DEVPATH is not set. Falling through to regular bind.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Post-policy reference: graphicfailtest.resources, Version=0.0.0.0, Culture=en-US, PublicKeyToken=null
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft.NET/FrameworkSDK/Samples/Tutorials/resourcesandlocalization/graphic/cs/graphicfailtest.resources.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft.NET/FrameworkSDK/Samples/Tutorials/resourcesandlocalization/graphic/cs/graphicfailtest.resources/graphicfailtest.resources.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft.NET/FrameworkSDK/Samples/Tutorials/resourcesandlocalization/graphic/cs/graphicfailtest.resources.EXE.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft.NET/FrameworkSDK/Samples/Tutorials/resourcesandlocalization/graphic/cs/graphicfailtest.resources/graphicfailtest.resources.EXE.
LOG: All probing URLs attempted and failed.

Odstranění položek

Odstranění jedné položky z protokolu:

  1. Vyberte záznam v prohlížeči.

  2. Klikněte na tlačítko Odstranit položku.

Odstranění všech položek z protokolu:

  • Klikněte na tlačítko Odstranit vše.

Aktualizace uživatelského rozhraní

  • Klikněte na tlačítko Aktualizovat . Prohlížeč automaticky nerozpozná nové položky protokolu, pokud je spuštěn. K jejich zobrazení musíte použít tlačítko Aktualizovat.

Změna nastavení protokolu

Kliknutím na tlačítko Nastavení otevřete dialogové okno Nastavení protokolu.

Zobrazení dialogového okna Informace

Klikněte na tlačítko O nás.

Protokoly vazeb pro nativní bitové kopie

Ve výchozím nastavení nástroj Fuslogvw.exe zaznamenává normální požadavky vazby sestavení. Případně můžete protokolovat vazby sestavení pro nativní bitové kopie vytvořené pomocí nástroje Ngen.exe (Generátor nativních bitových kopií).

Vazby sestavení protokolu pro nativní bitové kopie

  • Ve skupině Kategorie protokolů vyberte tlačítko možnosti Nativní bitové kopie.

Následující protokol zobrazuje chybu způsobenou neexistující závislostí při vytvoření nativní bitové kopie pro aplikaci. Pokud se tyto závislosti v době běhu liší od závislostí při spuštění nástroje Ngen.exe, vazba na nativní bitovou kopii není povolena.

*** Assembly Binder Log Entry  (12/8/2006 @ 5:22:07 PM) ***

The operation failed.
Bind result: hr = 0x80070002. The system cannot find the file specified.

Assembly manager loaded from:  E:\Windows\Microsoft.NET\Framework64\v2.0.50727\mscorwks.dll
Running under executable  E:\test\App.exe
--- A detailed error log follows.

LOG: Start binding of native image App, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null.
LOG: IL assembly loaded from E:\test\App.exe.
LOG: Start validating native image App, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null.
LOG: Start validating all the dependencies.
LOG: [Level 1]Start validating native image dependency mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089.
LOG: Dependency evaluation succeeded.
LOG: [Level 1]Start validating IL dependency b, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null.
WRN: Dependency assembly was not found at ngen time, but is found at binding time. Disallow using this native image.
WRN: No matching native image found.
LOG: Bind to native image assembly did not succeed. Use IL image.

Následující protokol zobrazuje selhání vazby nativní bitové kopie, ke kterému došlo, protože nastavení zabezpečení počítače při spuštění aplikace se liší od nastavení zabezpečení v době, kdy byla tato nativní bitová kopie vytvořena.

*** Assembly Binder Log Entry  (12/8/2006 @ 5:29:09 PM) ***

The operation failed.
Bind result: hr = 0x80004005. Unspecified error

Assembly manager loaded from:  E:\Windows\Microsoft.NET\Framework64\v2.0.50727\mscorwks.dll
Running under executable  E:\test\Application101622.exe
--- A detailed error log follows.

LOG: Start binding of native image Application101622, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null.
LOG: IL assembly loaded from E:\test\Application101622.exe.
LOG: Start validating native image Application101622, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null.
LOG: Start validating all the dependencies.
LOG: [Level 1]Start validating native image dependency mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089.
LOG: Dependency evaluation succeeded.
LOG: [Level 1]Start validating IL dependency Dependency101622, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null.
LOG: Dependency evaluation succeeded.
LOG: Validation of dependencies succeeded.
LOG: Start loading all the dependencies into load context.
LOG: Loading of dependencies succeeded.
LOG: Bind to native image succeeded.
Native image has correct version information.
Attempting to use native image E:\Windows\assembly\NativeImages_v2.0.50727_64\Application101622\1ac7fadabec4f72575d807501e9fdc72\Application101622.ni.exe.
Rejecting native image because it failed the security check. The assembly's permissions must have changed since the time it was ngenned, or it is running with a different security context.
Discarding native image.

Dialogové okno Nastavení protokolu

Pomocí dialogového okna Nastavení můžete provádět následující akce.

Zákaz protokolování

  • Vyberte tlačítko možnosti Protokol zakázáno. Tato možnost je ve výchozím stavu zvolena.

Protokolování vazby sestavení ve výjimkách

  • Vyberte tlačítko pro přihlášení k textu výjimky. Pouze nejméně podrobné informace protokolu jsou zaznamenány v textu výjimky. Chcete-li zobrazit úplné informace, použijte některé z dalších nastavení.

    Prohlédněte si důležitou poznámku týkající se sestavení, která jsou načtena jako doménově neutrální.

Protokolování selhání vazby sestavení

  • Vyberte tlačítko možnosti Log bind failures to disk (Neúspěšné připojení protokolu k disku).

    Prohlédněte si důležitou poznámku týkající se sestavení, která jsou načtena jako doménově neutrální.

Protokolování všech vazeb sestavení

  • Vyberte tlačítko pro protokolování všech vazeb na disk.

    Prohlédněte si důležitou poznámku týkající se sestavení, která jsou načtena jako doménově neutrální.

Důležité

Pokud je sestavení načteno jako doménově neutrální, LoaderOptimizationLoaderOptimization.MultiDomainLoaderOptimization.MultiDomainHostnapříklad nastavením vlastnosti na nebo , může zapnutí protokolování v některých případech prozrazeno paměti. K tomu může dojít, pokud je položka protokolu vytvořena při načtení doménově neutrálního modulu do domény aplikace a později, když je doména aplikace uvolněna. Položka protokolu nemusí být uvolněna až do ukončení procesu. Některé ladicí programy automaticky zapínají protokolování.

Povolení vlastní cesty protokolu

  1. Vyberte tlačítko Povolit vlastní cestu k protokolu.

  2. Zadejte cestu do textového pole Vlastní cesta protokolu.

Poznámka

Prohlížeč protokolu vazeb sestavení (Fuslogvw.exe) používá mezipaměť Internet Explorer (IE) k uložení protokolu vazeb. Kvůli občasnému poškození mezipaměti aplikace IE může prohlížeč protokolu vazeb sestavení (Fuslogvw.exe) někdy přestat zobrazovat nové protokoly vazeb v okně zobrazení. V důsledku tohoto poškození infrastruktura vazeb rozhraní .NET (Fusion) nemůže do protokolu vazeb zapisovat nebo číst. (K tomuto problému ne dojít, pokud používáte vlastní cestu k protokolu.) Pokud chcete opravit poškození a povolit, aby fúze znovu zobrazovat protokoly vazeb, vymažte mezipaměť internetových aplikací odstraněním dočasných internetových souborů z dialogového okna Možnosti internetu aplikace Internet Internet.

Pokud nespravovaná aplikace hostuje modul CLR (Common Language Runtime IHostAssemblyManagerIHostAssemblyStore ) implementací rozhraní a , položky protokolu nelze uložit do mezipaměti wininet. Chcete-li zobrazit položky protokolu pro vlastní hostitele implementující tato rozhraní, je nutné zadat alternativní cestu k protokolu.

Povolení protokolování pro aplikace spuštěné v kontejneru pro aplikace systému Windows

  1. Povolte vlastní cestu protokolu, jak je popsáno v předchozí proceduře. Ve výchozím nastavení mají aplikace spuštěné v kontejneru pro aplikace systému Windows omezený přístup na pevný disk. Zadaný adresář bude mít přístup pro čtení a zápis pro všechny aplikace v kontejneru aplikace.

  2. Zaškrtněte políčko Povolit imerzivní protokolování.

    Poznámka

    Toto pole je povoleno pouze v systému Windows 8 nebo novějším.

Viz také