我們有一個客戶使用我們 .NET 1.1 的 Windows Form 程式。
最近因為換電腦,所以 OS 升級成了 Windows 10。
結果我們的程式一執行起來就掛掉了。
到底是什麼原因造成的呢?
以下將一步步解開謎團 ...
程式環境為 .NET 1.1 , DLL (放在GAC之中)
因為程式掛掉應該要有 Log ,結果除沒有寫任何的資訊出來。
而看 事件檢視器 的內容,就只有顯示 File not found 的訊息。
與同事經過一番的努力查找問題,
Log還是沒有寫。卻也不知真正的問題是出在那裡。
所以下載 Process Monitor 來看看能不能找問題所在。
在 Monitor 之前,可以針對我們的程式來 Monitor ,如下,
然後當程式執行到 Crash 時,就停止 monitor 。
因為資訊很多,所以可以 Focus 在 Result 為不成功的地方,如下,
這樣資料就少一點了,
裡面有 FILE NOT FOUND,而事件視檢器中就是說 File not found ,
所以我們可以查看 File not found 的地方,如下,
結果看到程式需要找同一個底層的DLL,卻不同版本的。而且看不到有去找 Policy 的地方,如下,
所以最後就在 exe.config 中加入 ReBinding 的設定,再執行程式就可以順利執行了...
ReBinding 可以參考「如何讓相同的DLL使用bin目錄的,而不要使用到GAC的呢?」
或許也可以重新安裝 Policy 試看看哦!
大家在查找問題時,如果遇到瓶頸時,可以想看看是否有什麼 Tool 可以來幫我們呢?
如果喜歡的本文,也請幫忙推推哦 ^_^
Hi,
亂馬客Blog已移到了 「亂馬客 : Re:從零開始的軟體開發生活」
請大家繼續支持 ^_^