real world programming


Posted by kevinup on December 16, 2008

I was recently tasked with deploying some code I had written. I consider myself a good heads down developer, and prefer to let deployment issue and problems be covered by someone else. Its definatly a weak point on my resume.

The deployment wasn’t too complicated, I had a little console app, that would call two different WCF services. The problem was the box I was using had different versions of the the same WCF services, and several common libraries already in the GAC. Some things were signed, some stuff wasn’t. I was about ready to jump off a cliff with amount of DLL problems I was having then someone told me about FusionLog.

FusionLogvw.exe is probably one of the coolest tools in the .Net Framework. It basically gives you a bunch of data about your DLLs as they are loaded. You can set it up to log exceptions, or just log everything. It took me all of 15 minutes to figure my problems using FusionLog. Here are some screen captures and roughly some of the information that it spits out:


By clicking settings you can set up what you want to log:


By clicking on each row on the main screen here’s the type of information you can see:


*** Assembly Binder Log Entry  (12/16/2008 @ 2:01:38 PM) ***

The operation was successful.
Bind result: hr = 0x0. The operation completed successfully.

Assembly manager loaded from:  c:\WINNT\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll
Running under executable  C:\Documents and Settings\My Documents\Visual Studio 2008\Projects\FindGoodGuids\FindGoodGuids\bin\Debug\FindGoodGuids.exe
— A detailed error log follows.

=== Pre-bind state information ===
LOG: User = KevinUp
LOG: DisplayName = Oracle.DataAccess, Version=, Culture=neutral, PublicKeyToken=89b483f429c47342
LOG: Appbase = file:///C:/Documents and Settings/My Documents/Visual Studio 2008/Projects/FindGoodGuids/FindGoodGuids/bin/Debug/
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = NULL
Calling assembly : FindGoodGuids, Version=, Culture=neutral, PublicKeyToken=null.
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\Documents and Settings\My Documents\Visual Studio 2008\Projects\FindGoodGuids\FindGoodGuids\bin\Debug\FindGoodGuids.exe.Config
LOG: Using machine configuration file from c:\WINNT\Microsoft.NET\Framework\v2.0.50727\config\machine.config.
LOG: Publisher policy file is found at C:\WINNT\assembly\GAC_32\Policy.2.111.Oracle.DataAccess\\Policy.2.111.Oracle.DataAccess.config.
LOG: Publisher policy file redirect is found: redirected to
LOG: ProcessorArchitecture is locked to x86.
LOG: Post-policy reference: Oracle.DataAccess, Version=, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=x86
LOG: Found assembly by looking in the GAC.
LOG: Binding succeeds. Returns assembly from C:\WINNT\assembly\GAC_32\Oracle.DataAccess\\Oracle.DataAccess.dll.
LOG: Assembly is loaded in default load context.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: