c# - winform - windows forms application visual studio 2017




如何使用異常代碼修復在啟動時崩潰的.NET Windows應用程序:0xE0434352? (8)

我在Visual Studio 2010中構建了一個.NET Windows窗體應用程序。我還通過Visual Studio 2010構建了一個相應的安裝/安裝包。它構建為一個32位(x86)應用程序。 (我們使用僅限32位的第三方Windows窗體控件)。

我能夠運行安裝程序包並成功部署到其他Windows 7 64位環境和32位Windows XP盒。 安裝的應用程序運行正常。

但是,當我嘗試運行Windows Server 2008 R2 - 64位時,應用程序在啟動時崩潰。 它通過安裝程序成功安裝,沒有任何錯誤。

加載應用程序時似乎崩潰。 我將一個消息框作為應用程序中的第一行,以查看它是否超過了加載。 消息框未顯示,因此我假設它在應用程序的加載/初始化期間發生。

到目前為止,我還沒有找到太多進展。 從詳細信息我看到以下內容:

Exception Code: E0434352

我已經四處搜尋/谷歌搜索是否有任何明顯的東西,但我沒有看到任何東西。 我在CLR看到了一些可能的堆棧溢出的引用。

Windows窗體應用程序使用以下引用構建:

  • DevExpress的
  • Infragistics Winforms控件
  • ORACLE DataAccess DLL
  • 的RabbitMQ

有什麼問題? 如何解決這個問題呢? 如何調試以獲取更多有用信息?


問題:

.Net應用程序代碼在開始執行之前中止[控制台應用程序或Windows應用程序]

收到錯誤:已中止錯誤代碼“E0434352”

例外 :未知異常

場景1:

當一個應用程序已經執行時,它已經使用了一些依賴資源,並且這些資源仍然在執行應用程序時使用,當另一個應用程序或同一個exe從其他某個源觸發時,其中一個應用程序會拋出錯誤

場景2:

當應用程序由調度程序或自動作業觸發時,它可能在後台處於執行狀態,同時當您嘗試再次觸發相同的應用程序時,可能會觸發錯誤。

解:

創建應用程序,應用程序在完成後立即釋放所有資源的時間和地點在應用程序關閉後終止所有後台進程檢查並避免同時從多個源(如批處理,任務計劃程序和外部工具)執行應用程序。 檢查應用程序和資源依賴關係,並在需要時清理代碼。


0xE0434352是所有.NET異常的異常代碼,因此不會告訴您太多。 你是怎麼得到這個異常代碼的? 事件日誌?

最好的辦法是使用調試器來獲取更多信息。 如果Visual Studio調試器對您沒有幫助,那麼您可能需要使用SOS檢出WinDbg 。 請參閱herehere以獲取介紹。 讓它打破異常,看看你是否可以獲得有關原因的更多信息。

如果您懷疑加載程序集時出現問題,可能需要查看Fusion日誌


如果從事件查看器中收到該錯誤,則應該從源“.NET運行時”中看到另一個錯誤事件(至少一個)。 查看該錯誤消息,因為它將包含Exception信息。


我不確定這是否會對任何人有所幫助,但由於這是我的問題,我認為值得一提:

我收到了這個錯誤,結果證明了構建EXE的平台存在問題。 我們為x86構建了它,它需要是x64,因為項目中有一個Oracle引用。 當我們做出改變時,問題就消失了。 所以,看看你是否有任何類似的衝突。


所以..我在事件查看器中註意到此崩潰對應於“System.IO.FileNotFoundException”錯誤。

所以我解雇了ProcMon並註意到其中一個程序dll無法加載vcruntime140。 所以我只是安裝了vs15 redist並且它有效。


為了解決這個問題(因為許多應用程序突然開始拋出這個異常,例如,CorelDraw X6就是其中之一),我卸載了.NET 4.5運行時並安裝了.NET 4運行時。 這兩個版本不能並排安裝,但它們在GAC使用相同的版本號。 由於某些功能已在4.5中折舊,因此會導致問題。

DLL地獄已經回歸......


看起來這個錯誤0xe0434352適用於許多不同的錯誤。

如果它可以幫助任何人,我在嘗試在新的Windows 10安裝上安裝我的應用程序時遇到了這個錯誤。 它適用於其他機器,看起來應用程序會在臨終前暫時開始。 經過多次試驗和錯誤後,問題變成了應用程序需要DirectX9。 雖然DirectX的更高版本存在,但它必須有版本9.希望能為人們帶來一些挫敗感。


部署應用程序時我得到了這個。 在我的例子中,我在項目安全選項卡上選擇了“這是一個完全信任的應用程序”,並修復了它。





visual-studio-2010