Assembly Binding Log Viewer (Fuslogvw.exe)
The Assembly Binding Log Viewer (Fuslogvw.exe) helps to analyze the resource loading process. Detailed resource binding information is actually maintained on a per URL basis by the WinInet component of Windows. Unfortunately, when WinInet returns those entries they are not necessarily in chronological order.
By default, binding calls are not logged. To turn on logging, it is first necessary to create a DWORD value under the HKLM\Software\Microsoft\Fusion key. The first level of logging displays only failed resource binds. To enable this, you must create a LogResourceBinds DWORD value and set its value to something other than the default of 0.
Note You can cause a resource bind failure in the sample application by simply deleting or renaming an appropriate resource satellite assembly. For example, after deleting both \en-US\Graphic.resources.dll and \en\Graphic.resources.dll and then running the Graphic sample, Fuslogvw.exe will show the following output:
These two log entries indicate that, first, the common language runtime attempted to locate a resource for the en-US culture. Failing that, it attempted to load it for the en culture. Finally, failing that, it loaded it from the main assembly (which, because it was successful, was not logged).
Many developers, however, will want to see all binding log activity. In that case, it is necessary to set a similar DWORD value, ForceLog, to something other than the default 0. At that point, subsequent binding calls, both successes and failures, will get logged, and a typical log might look like this:
Selecting one of the resource binds (in this case for Locale=en-US) and then clicking and choosing View Log opens a browser window and produces a detailed log:
This particular log entry shows that the resource was successfully loaded after first searching the Global Assembly Cache (GAC) and then the application subdirectories. To reduce the number of files the common language runtime attempts to load and to increase performance, the common language runtime only attempts to locate the resource in files with .DLL extensions.