2012-08-06 115 views
1

爲什麼我用C#編譯的應用程序無法在其他電腦上工作?C#應用程序無法在其他電腦上工作

我已經安裝了.Net Framework 4.0。

當我打開我.exe另一臺計算機上,我得到的錯誤:

ERROR SIGNATURE: 

    Event Type: clr20r3 
    P1:   myapp.exe 
    P2:   1.0.0.0 
    P3:   502051f 
    P4:   myapp 
    P5:   1.0.0.0 
    P6:   502051f 
    P7:   2 
    P8:   6 
    P9:   System.IO.FileNotFoundException 
+0

只是爲了讓大家都知道,是錯誤的,因爲我是使用Visual Basic的PowerPack的線形。謝謝你們。 =) – 2012-08-09 20:22:33

回答

2

這聽起來像是一個缺少引用的案例。從解決方案資源管理器中檢查您的參考資料,或進入bin/debug或bin/release(取決於您的配置),並確保複製您的項目依賴的所有dll或exers

+0

沒錯。這似乎是一個DLL缺失。我會盡力找到問題,謝謝。 – 2012-08-06 22:41:40

3

一個system.io.filenotfoundexception通常意味着你的程序試圖打開是不存在的文件。很可能您的程序嘗試使用不存在或位於其他計算機上不同位置的路徑或文件名訪問某個文件。不知道myapp.exe應該做什麼,我無法進一步回答。

您的解決方案可能是重新編寫應用程序,以便以某種方式更好地處理該異常,例如在嘗試打開它之前檢查文件的存在。

0

最有可能的應用程序試圖加載一個程序集並且無法找到它

有點偏離主題,但理想情況下與任何應用程序你想添加一些'未處理'異常處理寫入日誌文件或事件日誌,以便您可以捕獲更多的異常疊加。

通常你只能得到最後一個異常消息,你也看不到調用堆棧

你可以很容易地捲起的異常使用這樣的事情:

string RollupException(Exception ex) 
{ 
    StringBuilder sb = new StringBuilder(); 

    sb.Append(ex.Message); 

    while(ex.InnerException != null) 
    { 
     sb.Append(Environment.Newline); 
     sb.Append(ex.Message); 
     ex = ex.InnerException; 
    } 

    return sb.ToString(); 
} 

您也可以使用EventLog類寫入事件日誌。

資訊:

http://msdn.microsoft.com/en-us/library/system.diagnostics.eventlog.aspx

退房的例子 - 記得先註冊一個事件源!

0

它看起來像你的程序缺少DLL(或DLL的被錯放):

http://social.msdn.microsoft.com/Forums/pl-PL/clr/thread/782217a8-46bd-4371-9915-28655d9b2c2f

Deciphering the .NET clr20r3 exception parameters P1..P10

對此的一種簡單的方法是創建一個安裝項目 - 這將隨後將項目的依賴項捆綁到安裝文件中。不過,如果您使用的是Visual Studio Express版本,我不認爲該選項可用。 。 。

http://www.dreamincode.net/forums/topic/58021-deploying-a-c%23-application-visual-studio-setup-project/

如果您非常確定這是一個。.NET框架是不可少的,下面的工具會告訴你什麼是你的機器上/你的客戶的,這樣你就可以找出缺少了什麼:

http://www.asoft.be/prod_netver.html

希望有所幫助。

0

我有完全相同的問題,像Joao最終發現它是由Windows Forms LineShape造成的。這會將Microsoft.VisualBasic.PowerPacks引用添加到您的項目中。當你在一個沒有安裝PowerPack的系統上運行它時,你只需要得到那個無用的System.IO.FileNotFoundException錯誤,而不知道哪個文件丟失了。

是的我知道這應該得到解決,如果你去做一個適當的分配設置,將提示用戶安裝...等等的麻煩,但我只是想能夠簡單地複製我的EXE到另一個系統。

解決方法:從窗體中刪除任何LineShapes,然後在引用中刪除對VisualBasic和VisualBasic.PowerPacks的引用。

大衛

[使用VS2008 SP]

相關問題