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

本文关键字:运行 计算机 应用程序 开发 PC NET | 更新日期: 2023-09-27 18:27:00

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

应用程序在我的开发机器(Windows 8.1 x64+Visual Studio 2013)上完美工作,但在生产设备(Windows 8平板电脑(非8.1))上根本无法运行。应用程序是在.NET 4.5下开发的,无论我是尝试运行调试版还是发布版都无所谓。进程只是挂起一段时间,然后关闭,没有任何错误或消息。

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

提前感谢:)。

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

在这种情况下,首先要查找的是Windows事件日志。当.NET应用程序严重崩溃时,.NET运行时将在那里记录事件。大多数情况下,这些事件将记录导致崩溃的堆栈跟踪。这将给你一个关于发生了什么的线索。

此类日志位于"应用程序"类别中,您需要查找的源名称为".NET Runtime"。通常,会有另一个源名称为"应用程序错误"的条目,但这个条目对您的帮助要小得多。

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

根据您使用这些技术的发现,您可能还想使用依赖性Walker或ILSpy等工具,正如Mike Dinescu所建议的那样。

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

不过,别担心,这条信息可能对你没有太大帮助。

您需要做的是使用一个工具来检查主可执行文件,该工具可以生成依赖树并找出缺少哪些DLL。这些很可能是本机二进制文件,而不是托管的。通常怀疑的是VC运行库、MFC或ATL库,但也可能有其他库。这就是为什么您需要使用DependencyWalker或RedGate的Reflector等工具来查找主可执行文件的所有依赖项。

这是因为您的外部库没有编译到最终的.exe文件中。所以你要么需要将它们包含在同一个文件夹中,要么将它们合并到exe中,但这个过程可能相当棘手。查找ILMerge。然而,用exe文件复制它们要容易得多。