1

为什么我用 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
4

5 回答 5

3

Asystem.io.filenotfoundexception通常意味着您的程序试图打开一个不存在的文件。您的程序可能正在尝试使用不存在或位于其他计算机上的不同位置的路径或文件名来访问某些文件。不知道该怎么myapp.exe做,我不能再回答了。

您的解决方案可能是重新编写您的应用程序,以便它以某种方式更好地处理该异常,例如在尝试打开文件之前检查文件是否存在。

于 2012-08-06T22:16:05.113 回答
2

在我看来,这听起来像是缺少参考资料的情况。从解决方案资源管理器中检查您的引用或进入 bin/debug 或 bin/release(取决于您的配置)并确保复制您的项目所依赖的所有 dll 或 exe

于 2012-08-06T22:16:49.840 回答
0

我遇到了完全相同的问题,并且像 Joao 一样最终发现它是由 Windows 窗体 LineShape 引起的。这会将 Microsoft.VisualBasic.PowerPacks 引用添加到您的项目中。然后,当您在未安装 PowerPacks 的系统上运行它时,您只会收到无用的 System.IO.FileNotFoundException 错误,而无法知道丢失了哪个文件。

是的,我知道这应该得到解决,如果您不小心进行了正确的分发设置,这将提示用户安装......等等。但我只想能够简单地将我的 EXE 复制到另一个系统。

解决方法:从表单中删除任何 LineShapes,然后在您的引用中删除对 VisualBasic 和 VisualBasic.PowerPacks 的引用。

大卫

【使用VS2008 SP】

于 2013-06-09T21:05:39.880 回答
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

查看示例 - 记得先注册一个事件源!

于 2012-08-06T22:21:51.653 回答
0

看起来您的程序缺少 DLL(或 DLL 被放错了位置):

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

解密 .NET clr20r3 异常参数 P1..P10

解决此问题的一种简单方法是创建一个安装项目 - 然后将您的项目的依赖项捆绑到一个安装文件中。如果您使用的是 Visual Studio Express 版本,我认为该选项不可用。. .

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

如果您非常确定缺少的是 .net 框架,以下工具将向您展示您的机器/客户端上的内容,以便您找出缺少的内容:

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

希望有帮助。

于 2012-08-06T22:22:06.677 回答