.NET C#应用程序在开发PC上运行良好,但在生产计算机上未运行

问题描述 投票:0回答:3

因此,基本上如标题中所述。 我已经使用一些外部库在Visual Studio 2013中创建了WPF应用。

应用程序可以在我的开发机器(Windows 8.1 x64 + Visual Studio 2013)上正常运行,但根本不能在生产设备(带有Windows 8的平板电脑(NOT 8.1))上运行。 应用程序是在.NET 4.5下开发的,不管我尝试运行Debug还是Release版本。 该过程只是挂了一段时间,然后关闭,没有任何错误或消息。

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

提前致谢 :)。

c# .net wpf visual-studio-2013
3个回答
2
投票

在这种情况下,要查找的第一件事就是Windows事件日志。 当.NET应用程序严重崩溃时,.NET运行时将在其中记录一个事件。 在大多数情况下,这些事件将记录导致崩溃的堆栈跟踪。 这将给您提示发生了什么。

此类日志位于“应用程序”类别中,您需要查找的源名称是“ .NET Runtime”。 通常,会有另一个源名称为“ Application Error”的条目,但是该条目对您的帮助较小。

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

根据您发现使用这些技术的东西,你可能还需要使用工具,如Dependency Walker中ILSpy ,由迈克迪内斯库的建议。


1
投票

很有可能在启动时发生绑定错误,但是将要测试的生产机器配置为静默报告这些错误,并且不会显示通常的对话框来通知您过程已崩溃。

不过,请不要担心,该信息可能对您没有太大帮助。

您需要做的是使用可以生成依赖关系树的工具检查主可执行文件,并找出缺少的DLL。 这些很有可能是本地二进制文件,而不是托管文件。 通常的怀疑是VC运行时,MFC或ATL库,但也可能还有其他库。 因此,您需要使用诸如DependencyWalkerRedGate的Reflector之类的工具来查找主要可执行文件的所有依赖项。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.