2010-05-19 55 views
5

我有一個.NET C#winforms應用程序,它在我的機器上效果很好,但如果我嘗試在另一臺機器上運行它,它不會啓動。沒有錯誤信息,沒有崩潰消息,沒有窗口 - 什麼都沒有。.NET應用程序默默無法啓動時,程序集丟失

我發現這總是在引用程序集丟失時發生。我想這是.NET的一般行爲,而不是特定於我的應用程序,是嗎?

有沒有什麼辦法可以配置.NET或我的應用程序,使得它在這種情況下吐出一個「引用程序集丟失」的錯誤消息?

+1

您是否嘗試過在事件查看器中查看應用程序日誌?通常會有一些錯誤信息解釋程序崩潰的原因。 – TLiebe 2010-05-19 16:07:15

+0

嗨TLiebe。感謝您的答覆。把它寫成一個口令,我會接受它:-)的確,即使在「錯誤報告」被禁用(由公司環境規定)時,我也發現了錯誤日誌消息。 – chiccodoro 2010-05-21 06:59:11

回答

6

這是不正常的。該應用程序將從觸發Windows錯誤報告的未處理異常中死亡。我將不得不猜測目標機器已禁用或更換了WER。

+0

就是這樣!太糟糕了,錯誤報告只會告訴我應用程序崩潰,但不會丟失什麼程序集。而且太糟糕了,exe文件沒有給標準錯誤輸出寫任何東西,「就像好男人一樣」......但至少我現在知道它爲什麼保持完全沉默。 – chiccodoro 2010-05-21 06:58:17

+0

沒有這樣的魔法存在。你必須自己添加它,爲AppDomain.CurrentDomain.UnhandledException事件實現一個事件處理程序。 – 2010-05-21 11:03:50

0

除了可執行文件,你是否也將DLL從debug/release文件夾複製到目標機器?

您可以嘗試複製其他機器上的整個調試/發佈文件夾。

同時檢查應用程序(如果有)/事件日誌的額外提示。

+0

嗨Ram。這實際上是我爲什麼應用程序失敗的確切原因:我忘了複製一些程序集。但我的問題在於爲什麼應用程序沒有抱怨缺少的程序集。 – chiccodoro 2010-05-21 06:51:36

+0

@chiccodoro: - 我不認爲如果這是可能的.NET程序集。對於COM,你可以檢查DLL是否已經在指定位置。對於.NET應用程序,如果程序集丟失,它只會拋出異常(我想方法未找到)。從我的建議,使每個引用的CopyLocal屬性= true,因此所有這些程序集將成爲您的調試/版本文件夾的一部分。 – Ram 2010-05-21 07:49:01

相關問題