Sdílet prostřednictvím


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

Prohlížeč protokolu vazby sestavení zobrazí podrobnosti o vazbách sestavení. Tyto informace vám pomůžou diagnostikovat, proč rozhraní .NET Framework nemůže najít sestavení za běhu. Tato selhání jsou obvykle výsledkem sestavení nasazeného do nesprávného umístění, nativní bitové kopie, která už není platná, nebo neshodou čísel verzí nebo jazykových verzí. Selhání modulu CLR (Common Language Runtime) při vyhledání sestavení se obvykle zobrazí jako TypeLoadException sestavení ve vaší aplikaci.

Důležité

Musíte spustit fuslogvw.exe 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 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í položku pro každou neúspěšnou vazbu sestavení. Pro každou chybu prohlížeč popisuje:

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

Jak...

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

  1. Výběrem tlačítka Výchozí možnost zobrazíte selhání vazby pro všechny typy aplikací. Ve výchozím nastavení jsou položky protokolu uložené v adresářích pro jednotlivé uživatele na disku v mezipaměti wininet.

  2. Výběrem tlačítka Vlastní možnost zobrazíte selhání vazby ve vlastním adresáři, který zadáte. Musíte zadat vlastní umístění, do kterého 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 čistý a obsahovat pouze soubory, které modul runtime generuje. Pokud obsahuje spustitelný soubor, který vygeneruje chybu, která se má protokolovat, chyba se nezaprotokoluje, protože nástroj se pokusí vytvořit adresář se stejným názvem jako 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í chybě

  1. Vyberte název aplikace požadované položky v prohlížeči.

  2. Klikněte na tlačítko Zobrazit protokol . Případně můžete poklikáním na vybranou položku.

    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 vazbu, včetně jejího názvu, kořenového adresáře aplikace (AppBase) a popisu cesty privátního hledání, pokud existuje.

    • Identita sestavení, které nástroj hledá.

    • Popis všech použitých zásad pro aplikace, vydavatele nebo správce

    • Zda bylo sestavení nalezeno v globální mezipaměti sestavení.

    • Seznamvšechch

Následující ukázková položka protokolu ukazuje podrobné informace o neúspěšné vazbě 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 položku 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č při spuštění automaticky nezjistí nové položky protokolu. 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.

Vazby protokolů pro nativní bitové kopie

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

Vazby sestavení protokolu pro nativní bitové kopie

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

Následující protokol ukazuje selhání způsobené závislostí, která neexistovala při vytvoření nativní bitové kopie pro aplikaci. Pokud se závislosti za běhu liší od závislostí při spuštění Ngen.exe, není povolena vazba na nativní bitovou kopii.

*** 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 ukazuje selhání vazby nativní bitové kopie, ke kterému došlo, protože nastavení zabezpečení v počítači při spuštění aplikace se liší od nastavení zabezpečení v době vytvoření nativní bitové kopie.

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

Zakázání protokolování

  • Vyberte tlačítko možnosti Protokol zakázáno . Všimněte si, že tato možnost je ve výchozím nastavení vybraná.

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

  • Vyberte tlačítko Pro přihlášení s textem výjimky . Do textu výjimky se zaprotokolují pouze nejméně podrobné informace o protokolu fúzní syntézy. Pokud chcete zobrazit úplné informace, použijte jedno z ostatních nastavení.

    Viz důležitá poznámka týkající se sestavení, která jsou načtena jako neutrální doména.

Protokolování selhání vazby sestavení

  • Vyberte tlačítko možnosti Připojení protokolu k tlačítku možnosti Disk .

    Viz důležitá poznámka týkající se sestavení, která jsou načtena jako neutrální doména.

Protokolování všech vazeb sestavení

  • Vyberte tlačítko Log all binds to disk option (Protokolovat všechny vazby na disk ).

    Viz důležitá poznámka týkající se sestavení, která jsou načtena jako neutrální doména.

Důležité

Pokud je sestavení načteno jako doménově neutrální, například nastavením LoaderOptimization vlastnosti na LoaderOptimization.MultiDomain nebo LoaderOptimization.MultiDomainHost, zapnutí protokolování může v některých případech nevratit paměť. K tomu může dojít v případě, že se při načtení modulu neutrálního domény do domény aplikace vytvoří položka protokolu a později se doména aplikace uvolní. Položka protokolu nemusí být uvolněna, dokud proces neskoní. Některé ladicí programy automaticky zapnou protokolování.

Povolení vlastní cesty k 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 vazby sestavení (Fuslogvw.exe) používá k ukládání protokolu vazby mezipaměť souborů v internetu. Kvůli občasným poškozením v mezipaměti může prohlížeč protokolů vazby sestavení (Fuslogvw.exe) někdy přestat zobrazovat nové protokoly vazeb v okně zobrazení. V důsledku tohoto poškození nemůže infrastruktura vazeb .NET (fúzní) zapisovat ani číst z protokolu vazeb. (Tento problém není zjištěn, pokud používáte vlastní cestu k protokolu.) Chcete-li opravit poškození a umožnit fúzi znovu zobrazit protokoly vazby, vymažte mezipaměť internetových souborů odstraněním dočasných internetových souborů z oddílu Historie procházení ve vlastnostech internetu.

Pokud vaše nespravovaná aplikace hostuje modul CLR (Common Language Runtime) implementací IHostAssemblyManager rozhraní a IHostAssemblyStore rozhraní, nelze položky protokolu ukládat do mezipaměti wininet. Chcete-li zobrazit položky protokolu pro vlastní hostitele, kteří implementují tato rozhraní, je nutné zadat alternativní cestu protokolu.

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

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

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

    Poznámka:

    Toto pole je povolené jenom ve Windows 8 nebo novějším.

Viz také