C# 应用程序在 Windows 7 中运行,但不在 Windows XP 中

Posted

技术标签:

【中文标题】C# 应用程序在 Windows 7 中运行,但不在 Windows XP 中【英文标题】:C# app runs in Windows 7, but not in Windows XP 【发布时间】:2011-03-21 14:55:18 【问题描述】:

我在 VS C# Express 2008 中使用 Windows 7 作为我的操作系统创建了一个应用程序。它在其他 W7 机器上运行得非常好,但是当我们尝试将它部署到装有 XP 的机器上时,它甚至无法运行。我只是收到通常的“应用程序需要终止”错误消息。该应用程序是使用 .NET 3.5 构建的,所有机器都至少安装了 3.5。我可以做些什么来让程序在以前的版本中运行吗?提前感谢您的帮助。

更新信息。 这些机器都使用 x86 32 位操作系统,无论是 XP SP3 还是 W7,所以我认为不需要检查 64 位问题。应用程序本身正在将图像加载到图像列表中,并在发现文件名中断时添加图像。 (例如,一个文件夹中有 4 个图像,1-3 和 5,应用程序所做的是遍历每个图像名称,并且在它看到图像 4 丢失的那一刻,它添加一个占位符图像并将其标记为图像 4。)

【问题讨论】:

你需要添加更多细节,从这个看不出太多。 您检查过任何 x64 - x86 问题吗? 应用程序在做什么?我们是在谈论 Hello World 还是更复杂的东西?您可能有一些需要特定操作系统和版本的外部依赖项。这些应该被抽象出来,以便您可以相应地插入不同的实现。 (这主要是猜测,也有可能机器只是以某种方式坏了。我们需要更多细节。) 无论如何将编译器设置为 x86 可能是值得的。 【参考方案1】:

您应该设置一个UnhandledExceptionEventHandler,以便您可以记录有关应用程序当前状态和异常信息的信息。它不会阻止您的应用程序崩溃,但它会为您提供有关所发生情况的更多信息,并使您的最终用户更容易在应用程序崩溃时为您提供您需要知道的信息。

This article 很好地描述了如何做到这一点。

【讨论】:

感谢您的文章。这至少可以帮助我找出可能导致问题的原因。 在实现 UnhandledExceptionEventHandler 之后,它帮助我看到我的一个 DLL 没有被加载。经过进一步检查,我注意到它们没有被打包到安装程序中,所以我不得不手动插入它中。感谢您的帮助。【参考方案2】:

首先,您必须确保在您的 Windows XP 机器上安装了 .Net Framework 3.5。如果一切正常,那么您应该检查您是否使用“第三方 dll 作为参考”并在您的 Windows XP 机器上验证它们的存在和正确的版本。

这可能会有所帮助。

【讨论】:

【参考方案3】:

记录应用程序抛出的异常,以便您修复它。

【讨论】:

如果在加载(主)DLL 的过程中抛出异常,则不容易捕获。【参考方案4】:

信息不多,但有一些需要检查的地方:

确保您拥有 XP 和 SP 版本的最新补丁

也许您需要以管理员身份运行程序 - 您是否以管理员身份登录

您是否检查过 Windows 应用程序错误日志以查看是否有任何有用的信息

【讨论】:

以上是关于C# 应用程序在 Windows 7 中运行,但不在 Windows XP 中的主要内容,如果未能解决你的问题,请参考以下文章

在 Parallels 8 中的 Windows 7 上运行 C# Windows Forms 应用程序错误

Windows 7中的断电事件... C#问题[重复]

Windows Forms c#在运行时添加函数到一个新的Listbox

如何在 Windows 窗体中运行 MS Access 2013 中保存的查询。 C#

如何在 Windows 7 上关闭无头图形环境

在 C# 中为 Windows 7 和 Xp Sp3 控制 Windows 防火墙