2012-08-06 111 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]

相关问题