Sdílet prostřednictvím


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í. Selhání common language runtime při vyhledání sestavení se obvykle ve vaší aplikaci zobrazí jako TypeLoadException objekt.

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. Ke spuštění nástroje použijte příkazový řádek pro vývojáře sady Visual Studio nebo Prostředí 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í. Pro každé selhání prohlížeč popisuje:

  • aplikace, která iniciovala vazbu
  • sestavení, pro které je vazba, 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í možnosti zobrazíte selhání 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í možnost zobrazíte selhání vazby ve vlastním adresáři, který zadáte. Je nutné zadat vlastní umístění, kam má modul runtime ukládat protokoly nastavením vlastního umístění protokolu v dialogovém okně 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 uloží výchozí umístění vazby v 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í chybě

  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í (GAA).

    • 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.

Odstranit položky

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 O aplikaci

Klikněte na tlačítko O aplikaci .

Protokoly vazby pro nativní image

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í Ngen.exe (Native Image Generator).

Vazby sestavení protokolů 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í protokolu můžete provést 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 Možnosti Přihlásit se 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 přepínač Log binds failures to disk (Protokolovat selhání vazby 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í.

Protokolování všech vazeb sestavení

  • Vyberte přepínač Protokolovat všechny vazby 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 neutrální z domény, například nastavením LoaderOptimization vlastnosti na LoaderOptimization.MultiDomain nebo LoaderOptimization.MultiDomainHost, může zapnutí protokolování v některých případech nevratit paměť. 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 možnosti Povolit vlastní cestu k protokolu .

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

Poznámka

Prohlížeč protokolů vazby sestavení (Fuslogvw.exe) používá k ukládání protokolu vazby mezipaměť souborů internetu. Z důvodu občasného poškození mezipaměti může prohlížeč protokolů 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 dochází, pokud používáte vlastní cestu protokolu.) Pokud chcete poškození opravit a umožnit fúzi znovu zobrazit protokoly vazeb, vymažte mezipaměť internetových souborů odstraněním dočasných internetových souborů z oddílu Historie procházení v části Vlastnosti internetu.

Pokud vaše nespravovaná aplikace hostuje modul CLR (Common Language Runtime) implementací IHostAssemblyManager rozhraní a IHostAssemblyStore , nelze položky protokolu 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é