我用C#编写了一个带有.Net 4.0的程序,它在我编译它的两台计算机上运行良好。但是当我将程序复制到其他人的计算机上时,该程序甚至没有显示它的UI,并发出如下的MessageBox:
方框说我的程序导致APPCRASH。任何人都知道如何解决问题?
答案 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。
事件日志似乎真的有用。
谢谢所有关心的人!