我的C#程序在其他计算机中导致APPCRASH

时间:2014-02-19 07:08:51

标签: c# crash

我用C#编写了一个带有.Net 4.0的程序,它在我编译它的两台计算机上运行良好。但是当我将程序复制到其他人的计算机上时,该程序甚至没有显示它的UI,并发出如下的MessageBox: enter image description here

方框说我的程序导致APPCRASH。任何人都知道如何解决问题?

3 个答案:

答案 0 :(得分:2)

可能有几个原因。其中一个比较常见的是你正在为目标机器没有的.NET框架编译它。另一个可能是你正在编译64位,而目标机器是32位。

解决此问题的一些步骤:

如果您使用的是Visual Studio,请右键单击您的项目并转到Properties。 在Application标签中,查看列出的Target framework。它可能是.NET Framework 4.5.1 将其更改为.NET Framework 4 Client Profile,看它是否在目标计算机上运行。 此外,在Build下,查看您选择的Platform target个选项并进行相应调整。选择x86而不是Any CPU可能会有所帮助。

其他想法/提示:

从截图中可以看出,您在Windows 7计算机上运行它,所以我怀疑.NET框架是否存在问题;在这种情况下,请确保目标计算机包含您正在使用的所有相应库。如果您有一些非本地库,请确保为其Copy Local设置true

顺便说一句......当你说你复制它时,我假设你正在复制所有相应的文件和可执行文件,对吧?可能有一些文件,例如库,应用程序配置文件等,您需要随之复制。

David Khaykin提到你可能在那里遇到未处理的例外。因此,正如此SO thread中所建议的那样,您可能希望为AppDomain.CurrentDomain.UnhandldedException事件实现事件处理程序并检查e.ExceptionObject.ToString()的值。

这是MSDN链接,可以帮助您(滚动到底部查看示例):http://msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception(v=vs.110).aspx

分析崩溃的一些方法:

这是一篇描述如何分析崩溃的简洁文章:

http://blogs.msdn.com/b/anandbms/archive/2005/04/20/410225.aspx

它使用AdPlus,您可以在http://support.microsoft.com/kb/286350

了解更多信息并获取

这是WinDbg调试工具的更直接链接:http://msdn.microsoft.com/en-us/windows/hardware/hh852365(向下滚动一半,如果那是您的操作系统,请确保获得Windows 7版本。)

这些只是我在C#冒险过程中所做的一些事情,所以希望其中一个可以帮助你。

答案 1 :(得分:2)

我遇到此问题一次(APPCRASH引用kernelbase.dll),在我的情况下,由于用户个人资料已损坏而导致问题(没有特定原因,但我遇到了几个蓝屏之前,它阻止我的一些(但不是全部!)应用程序突然不再工作:验证它,尝试在有故障的计算机上创建一个新的Windows用户,复制该应用程序并尝试执行它。

答案 2 :(得分:1)

我检查了目标机器中的事件日志,并提供了一些有用的信息。这些信息就在“APPCRASH”旁边,它就像“找不到文件......”。然后我检查了我的程序,发现编译器没有复制lib。

事件日志似乎真的有用。

谢谢所有关心的人!