C#应用程序没有';我不能在其他电脑上工作
本文关键字:不能 其他 电脑 工作 应用程序 | 更新日期: 2024-10-20 09:38:43
为什么我用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
system.io.filenotfoundexception
通常意味着您的程序试图打开一个不存在的文件。您的程序可能正在尝试使用不存在的路径或文件名访问某些文件,或者该路径或文件名将位于其他计算机上的其他位置。如果不知道myapp.exe
应该做什么,我就无法再回答了。
你的解决方案可能是重新编写你的应用程序,以便它以某种方式更好地处理该异常,例如在尝试打开文件之前检查文件的存在。
这听起来像是缺少引用的情况。从解决方案资源管理器检查您的引用,或进入bin/debug或bin/release(取决于您的配置),并确保复制您的项目依赖于的所有dll或exe
应用程序很可能正在尝试加载程序集,但在中找不到它
有点脱离主题,但理想情况下,对于任何希望添加一些"未处理"异常处理以写入日志文件或事件日志的应用程序,这样您就可以捕获更多的异常堆栈。
通常你只得到最后一条异常消息,也看不到调用堆栈
你可以很容易地使用这样的东西来汇总异常:
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
查看示例-记得先注册一个事件源!
看起来你的程序缺少一个DLL(或者DLL放错地方了):
http://social.msdn.microsoft.com/Forums/pl-PL/clr/thread/782217a8-46bd-4371-9915-28655d9b2c2f
正在解密。NET clr20r3异常参数P1.P10
解决这个问题的一个简单方法是创建一个安装项目,然后将项目的依赖项捆绑到一个安装文件中。不过,如果您使用Visual Studio速成版,我认为该选项不可用。
http://www.dreamincode.net/forums/topic/58021-deploying-a-c%23-应用程序visual studio设置项目/
如果你很确定这是一个缺失的.net框架,下面的工具会向你展示你的机器/你的客户端上有什么,这样你就可以找出缺失的东西:
http://www.asoft.be/prod_netver.html
希望能有所帮助。
我遇到了完全相同的问题,和Joao一样,最终发现这是由Windows窗体LineShape引起的。这添加了Microsoft。VisualBasic。PowerPacks对您的项目的引用。当你在一个没有安装PowerPacks的系统上运行它时,你只会得到一个毫无帮助的系统。IO.FileNotFoundException错误,没有关于丢失哪个文件的线索。
是的,我知道如果你麻烦地进行正确的分发设置,这会提示用户安装。。。,等等。但我只想能够简单地将我的EXE复制到另一个系统。
要解决:从表单中删除任何LineShapes,然后删除对VisualBasic和VisualBasic的引用。您的参考资料中的PowerPacks。
David
[使用VS2008 SP]