所以它基本上如标题中所述。我使用一些外部库在Visual Studio 2013中创建了一个WPF应用程序。
应用程序在我的开发机器(Windows 8.1 x64 + Visual Studio 2013)上完美运行,但在生产设备(Windows 8(非8.1)平板电脑上)根本无法运行。应用程序是在.NET 4.5下开发的,如果我尝试运行Debug或Release版本并不重要。进程只是暂停一段时间然后关闭,没有任何错误或消息。
如果有人知道该怎么做或如何解决这个问题,我会非常高兴。
提前致谢:)。
答案 0 :(得分:2)
在这种情况下,第一件事就是Windows事件日志。当.NET应用程序崩溃时,.NET Runtime会在那里记录一个事件。 大多数情况下,这些事件将记录导致崩溃的堆栈跟踪。这会给你一个关于发生了什么的提示。
此类日志可在"应用程序"类别,您需要查找的源名称是#34; .NET Runtime"。通常,会有另一个源名称为" Application Error"的条目,但这个条目不太可能帮助您。
另一项有用的技巧是在程序开始时添加一个Console.WriteLine调用,以查看该行是否可以运行。
根据您使用这些技术发现的内容,您可能还想使用Mike Dinescu建议的Dependency Walker或ILSpy等工具。
答案 1 :(得分:1)
很可能在启动时发生了绑定错误,但您正在测试的生产计算机被配置为静默报告这些错误,并且它不会显示通知您该进程崩溃的典型对话框。 p>
不要担心,无论如何,这条消息可能对你没什么帮助。
您需要做的是使用可生成依赖关系树并找出缺少哪些DLL的工具检查主可执行文件。最有可能这些是原生二进制文件,而不是托管。通常的嫌疑人是VC运行时,或MFC或ATL库,但也可能有其他人。这就是您需要使用DependencyWalker或RedGate's Reflector等工具来查找主可执行文件的所有依赖项的原因。
答案 2 :(得分:0)
这是因为您的外部库未编译为最终的.exe文件。因此,您需要将它们包含在同一文件夹中或将它们合并到exe中,但这个过程可能非常棘手。寻找ILMerge。但是,使用exe文件复制它们会更容易。