【发布时间】:2011-06-30 14:30:09
【问题描述】:
我在 Windows 7 Ultimate 机器上使用 Visual Studio 2010 中的 C# .NET 4.0 编写了一个应用程序。此应用程序在 Vista 和其他 Windows 7 计算机上都可以正常运行,但每当有人运行 Windows XP 尝试运行它时,它就会崩溃。
为了重现这一点,我尝试在我的 Win XP VMWare 机器上运行它,但它在那里崩溃了。不幸的是,它没有给我任何具体的错误,只是通知我程序已经崩溃并需要关闭。
另一个用户给我发了以下信息:
Run-time error '339'
Component 'vbalSGrid6.ocx' or one of its dependencies not correctly registered: a file is missing or invalid.
Code 0xe0434352
Flags 0x00000001
当我尝试在我的 Virtual XP 机器上运行它时,我没有得到那个特别的信息,而且我还确保在那里安装了 .NET 4.0。
这可能是什么原因造成的,如果 XP 支持 .NET 4 框架,为什么应用程序不能在 XP 中运行?
程序中用到的组件:DataGridView、ComboBox、Buttons、Label、LinkLabel、NewtonSoft的JSON解析器等等。
我很困惑,完全不知道从哪里开始。想法?
更新:嗯,尝试在 XP 上运行我最近创建的另一个应用程序,它加载正常。两者之间唯一的主要区别(在我使用的组件中)是我使用 NewtonSoft 的 JSON 库,我实际上认为它是一个 .NET 3.5 组件。
更新 2:我尝试在 Wind7 机器上以“Windows XP SP3”兼容模式运行该程序,结果运行良好。当然,我不知道“兼容模式”与真正的 XP SP3 环境的模拟有多接近,但我想我还是会把信息告诉你的。
【问题讨论】:
-
它们都是 32 位的吗?它可能不是操作系统,就好像您正在处理 64 与 32 位一样???
-
你必须有WinXP SP3(或以上)
-
@Mitch:他说他安装了 .NET 4,我认为如果他没有先决条件 WinXP SP3 是不可能的。
-
NewtonSoft 的 JSON 库不是 .NET Framework 3.5/4 的一部分,而且 .NET FW 3.5/4.0 根本没有使用 OCX 技术,因为 .NET FW 4.0 是基于 COM 的
标签: c# .net-4.0 windows-xp compatibility backwards-compatibility