你們在項目中是否是常常遇到DLL引用錯誤的狀況,或者是DLL引用的版本,路徑不對的狀況。遇到這種狀況通常處理起來比較困難,每每會以爲DLL版本正確了,引用路徑正確了,爲何程序仍是引用的老版本,程序是從什麼地方引的老版本呢?爲何會引用到老版本呢?web
今天我在項目中就遇到此種狀況,屢次google終於找到了一個利器,他能夠詳盡的分析程序所引用的DLL,包括DLL的路徑,版本等。windows
Fusion Log viewer:app
此利器可查看windows服務,Asp.net及winform程序的Accemblly引用狀況。asp.net
用法以下:this
1. 打開 Fusion Log Viewer. 在開始菜單中的vs菜單下找以下所示的菜單項。google
也能夠在vs的控制面板上輸入 fuslogvm 回車。spa
2. 設置log path,.net
注意,此路徑必須是程序運行賬號有讀寫權限。3d
若是是Asp.net程序,則須要將註冊表項改爲:code
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion
下的key: ForceLog的值改爲1.
3. 運行程序,點擊刷新,便可看到各App加載的Dll.
注:asp.net程序要重啓應用程序池。
4. 選中某項DLL,點擊 「View log」,便可查看此DLL加載的詳情。
5. 詳情示例以下:
*** Assembly Binder Log Entry (2013/8/29 @ 15:51:55) *** The operation was successful. Bind result: hr = 0x0. The operation completed successfully. Assembly manager loaded from: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll Running under executable c:\windows\system32\inetsrv\w3wp.exe --- A detailed error log follows. === Pre-bind state information === LOG: User = IIS APPPOOL\HP LOG: DisplayName = HP.EMEA.Users, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null (Fully-specified) LOG: Appbase = file:///E:/WebForm/Benjamin/HP_EMEA/src/HP.EMEA.Web/ LOG: Initial PrivatePath = E:\WebForm\Benjamin\HP_EMEA\src\HP.EMEA.Web\bin;E:\WebForm\Benjamin\HP_EMEA\src\HP.EMEA.Web\App_Data\Dependencies LOG: Dynamic Base = C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\3f9f5b26 LOG: Cache Base = C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\3f9f5b26 LOG: AppName = 3dc751a6 Calling assembly : HP.EMEA.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null. === LOG: This bind starts in default load context. LOG: Using application configuration file: E:\WebForm\Benjamin\HP_EMEA\src\HP.EMEA.Web\web.config LOG: Using host configuration file: C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet.config LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config. LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind). LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/3f9f5b26/3dc751a6/HP.EMEA.Users.DLL. LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/3f9f5b26/3dc751a6/HP.EMEA.Users/HP.EMEA.Users.DLL. LOG: Attempting download of new URL file:///E:/WebForm/Benjamin/HP_EMEA/src/HP.EMEA.Web/bin/HP.EMEA.Users.DLL. LOG: Attempting download of new URL file:///E:/WebForm/Benjamin/HP_EMEA/src/HP.EMEA.Web/bin/HP.EMEA.Users/HP.EMEA.Users.DLL. LOG: Attempting download of new URL file:///E:/WebForm/Benjamin/HP_EMEA/src/HP.EMEA.Web/App_Data/Dependencies/HP.EMEA.Users.DLL. LOG: Assembly download was successful. Attempting setup of file: E:\WebForm\Benjamin\HP_EMEA\src\HP.EMEA.Web\App_Data\Dependencies\HP.EMEA.Users.dll LOG: Entering download cache setup phase. LOG: Assembly Name is: HP.EMEA.Users, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null LOG: Binding succeeds. Returns assembly from C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\3f9f5b26\3dc751a6\assembly\dl3\edfaf494\093cd725_8ca4ce01\HP.EMEA.Users.dll. LOG: Assembly is loaded in default load context.