2012-09-16 56 views
0

我正在使用C#編寫的應用程序,並且在安裝了Visual Studio的操作系統上運行正常。
如果我把可執行文件放到任何其他的操作系統上,它會在執行時崩潰。
我怎麼知道什麼是缺少,以便我可以解決這個問題?
要在這種情況下,更確切地說,我已經使用了一些Telerik的成分,我發現已經有關於它旁邊的可執行文件數的DLL。
我也裝水晶報表的Visual Studio 2010,因爲有項目報告(2008年CR),雖然我沒有用他們至今。(我也嘗試安裝如何在運行時找到導致應用程序崩潰的缺失?

SAP_Crystal_Reports_runtime_engine_for_.NET_Framework_4_32bit

而且

CRforVS_redist_install_32bit_13_0_1

在這些應用程序失敗的系統上。但再次沒有運氣。

如果我能知道究竟缺,我可以知道我處理的直行向前,並解決這一問題

+0

你得到什麼錯誤訊息?你有沒有添加任何錯誤處理程序? –

+0

捕捉異常並顯示它。 – SLaks

+0

我已經把一個異常在我的Program.cs,但似乎之前執行應用程序本身(我指的是第一行代碼)。我需要重新啓動才能寫下error.I'll被更新後它發生。 – Breeze

回答

3

一種選擇是使用Fusion log viewer看到在目標機器上裝配的綁定信息。任何程序集綁定失敗都會被記錄下來,您可以看到哪些程序集無法加載,以及運行時正在尋找它們的位置。

1

你要通過引用列表看看。凡是不在框架標準​​,設置參考的屬性將裝配複製到構建目錄。]

此外,請確保您正在爲您的項目屬性正確的處理器架構。

+0

謝謝,我需要重新啓動系統並在我的其他操作系統上測試它。如果它解決了問題,我會報告回來。 – Breeze

+0

它解決我的問題的方式:)再次感謝您 – Breeze

1

檢查目標機的事件日誌。可能會缺少一些依賴關係。請參閱Dependecies。如果在應用程序異常事件中由於應用程序中的異常而導致崩潰。

+0

不,我已經把一個try-catch Program.cs中這樣,每當發生異常時我記錄它。 – Breeze

1

我認爲你可以使用AssemblyResolve事件這個

AppDomain.CurrentDomain.AssemblyResolve += (object sender, ResolveEventArgs args)=> 
    { 
     string assemblyToResove = args.Name; 
     //return Assembly.Load(....); 
    };