我有一个在 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、Labels、LinkLabel、NewtonSoft的JSON解析器,仅此而已。
我很困惑,完全不知道从哪里开始。有想法吗?
UPDATE:嗯,尝试在 XP 上运行我最近创建的另一个应用程序,它加载得很好。两者之间唯一的主要区别(无论如何我使用的组件)是我对 NewtonSoft 的 JSON 库的使用,我实际上认为它是一个 .NET 3.5 组件。
UPDATE 2:只是为了好玩,我尝试在我的 Wind7 机器上以“Windows XP SP3”兼容模式运行该程序,并且运行良好。当然,我不知道“兼容模式”与真正的 XP SP3 环境的模拟程度有多接近,但我想无论如何我都会向您提供这些信息。
这是应用程序图标!
我一直注意到它在给我的错误中引用的模块是system.drawing
我觉得这很奇怪。我认为可能是我使用的 PictureBox 导致了这个问题,所以我尝试禁用与此相关的所有内容,但无济于事。
我让我的业务合作伙伴设置了他的 XP 机器,这样除了我的 VMWare XP 机器之外,我们还有另一台机器可以进行测试,以防万一出现一些奇怪的问题。
在他设置好并复制应用程序后,他说“这些图标看起来像 DOS 的图标”,我灵光一现。
我使用 .PNG 作为图标,因为它们支持透明度等,但 XP 本身并不支持它们。因此,当应用程序被复制到桌面时,它只使用了一个通用图标,当应用程序运行时,它崩溃了,因为 XP 不知道如何渲染 .PNG。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)