.NET C#App在开发PC上运行良好,但不能在生产计算机上运行

时间:2014-10-19 18:42:01

标签: c# .net wpf visual-studio-2013

所以它基本上如标题中所述。我使用一些外部库在Visual Studio 2013中创建了一个WPF应用程序。

应用程序在我的开发机器(Windows 8.1 x64 + Visual Studio 2013)上完美运行,但在生产设备(Windows 8(非8.1)平板电脑上)根本无法运行。应用程序是在.NET 4.5下开发的,如果我尝试运行Debug或Release版本并不重要。进程只是暂停一段时间然后关闭,没有任何错误或消息。

如果有人知道该怎么做或如何解决这个问题,我会非常高兴。

提前致谢:)。

3 个答案:

答案 0 :(得分:2)

在这种情况下,第一件事就是Windows事件日志。当.NET应用程序崩溃时,.NET Runtime会在那里记录一个事件。 大多数情况下,这些事件将记录导致崩溃的堆栈跟踪。这会给你一个关于发生了什么的提示。

此类日志可在"应用程序"类别,您需要查找的源名称是#34; .NET Runtime"。通常,会有另一个源名称为" Application Error"的条目,但这个条目不太可能帮助您。

另一项有用的技巧是在程序开始时添加一个Console.WriteLine调用,以查看该行是否可以运行。

根据您使用这些技术发现的内容,您可能还想使用Mike Dinescu建议的Dependency WalkerILSpy等工具。

答案 1 :(得分:1)

很可能在启动时发生了绑定错误,但您正在测试的生产计算机被配置为静默报告这些错误,并且它不会显示通知您该进程崩溃的典型对话框。 p>

不要担心,无论如何,这条消息可能对你没什么帮助。

您需要做的是使用可生成依赖关系树并找出缺少哪些DLL的工具检查主可执行文件。最有可能这些是原生二进制文件,而不是托管。通常的嫌疑人是VC运行时,或MFC或ATL库,但也可能有其他人。这就是您需要使用DependencyWalkerRedGate's Reflector等工具来查找主可执行文件的所有依赖项的原因。

答案 2 :(得分:0)

这是因为您的外部库未编译为最终的.exe文件。因此,您需要将它们包含在同一文件夹中或将它们合并到exe中,但这个过程可能非常棘手。寻找ILMerge。但是,使用exe文件复制它们会更容易。