Windows 10 執行 .NET 1.1 程式,居然 Crash 掉了

我們有一個客戶使用我們 .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:從零開始的軟體開發生活

請大家繼續支持 ^_^