如何检查代码与Windows 7兼容

时间:2010-04-21 11:11:12

标签: c# visual-studio-2008 windows-7 windows-xp 32bit-64bit

我们正在开发使用Visual C#2008在Windows XP机器(32位)下运行基于WPF的程序。

问题是我们试图在两台Windows 7机器上运行程序,一台是32位Windows 7,另一台是64位Windows 7。

在Windows XP下,一切都很好。在Windows 7机器中,它以32位版本启动,尽管在运行一个功能时出现错误(在XP中不会发生)。

在W7 64位中,它甚至无法启动。这是正常的吗?在W7 64位下运行32位程序是不可能的,即使它们执行速度较慢??

我们如何检查代码是否与Windows 7兼容?

非常感谢你。

Julen。

5 个答案:

答案 0 :(得分:4)

好的,因为用户提供了更多信息,我相信已经找到了罪魁祸首。 客户端在其应用程序(标准 MS Jet 提供程序)中使用MS Access数据库。问题是Microsoft没有64位版本的 MS Jet 提供程序,不会执行此操作。不知道为什么:)

因此,要使应用程序在Windows 7 64位上运行,请执行以下操作:在Visual Studio中转到项目属性,在“构建”选项卡中,“平台”目标将Any CPU更改为x86。这将强制应用程序以32位模式编译(将在Win7 64上的WOW64下运行),并且应用程序将能够访问Access数据库。我相信这就是为什么它不是在64位操作系统上运行的原因:)

关于“运行一个功能时出错”,我建议您获取有关错误的更多详细信息,并使用它创建一个新问题。

玩得开心,祝你好运!

答案 1 :(得分:2)

我同意Artiom并且只看到一个有效答案:在Windows 7上测试它。 我们可以在这里写下可能出现问题的列表(我会在一秒钟内写下来),但你仍然需要

  • 在相关架构上测试您的软件
  • 自己检查错误消息/条件

XP和Windows 7之间可能发生的变化:

用户访问控制(UAC): 这意味着除非您

,否则您的程序不会以管理权限运行
  • 明确地启动它
  • 需要Vista / Windows7支持的特定清单资源中的管理权限

这也意味着您的应用程序无法写入某些文件夹(UAC尝试使用“虚拟文件夹重定向”“帮助”您:如果您写入%ProgramFiles%,它会静默写入您的用户配置文件并“成功”。如果是另一个用户希望看到你在%ProgramFiles%directoy中的变化,虽然它不会出现在那里,甚至没有出现错误。

关于您的具体报告和问题:

1)提供有关该功能的更多详细信息。也许这取决于Windows7上没有的DLL(但是在每台XP机器上都有)。也许它只与权限有关(见上文)。更多细节 - >更多帮助。

2)再次,更多细节。可能的候选者:您的应用程序作为64位应用程序运行,尽管它通过P / Invoke对32位本机DLL具有硬/早期依赖性。同样,您提供的信息不足。

答案 2 :(得分:1)

我认为这不是兼容性问题。 32位和64位的Windows 7应该与C#WPF应用程序完全兼容。并且它在64位操作系统上运行速度不会明显变慢。你不应该注意到任何降级。

如果您的应用程序在Win7上崩溃,请检查您的代码,检查它抛出的例外情况。我几乎确信罪魁祸首就在那里。

答案 3 :(得分:0)

当我在Win XP 32位开发了我的业余爱好项目并试图在64位Vista中运行时,我有同样的iseeu。即使目标cpu设置为“任何CPU”,应用程序甚至都没有启动并开始抛出错误。

现在我使用Win 7机器(64)位进行开发,并将目标CPU设置为“任何CPU”。它在Vista和XP(32位和64位)中都没有任何问题。

你也可以只使用“32位”模式。您的应用程序不会有任何性能问题。

我建议您在Windows 7电脑上打开该应用,然后调试或重新编译并在较低版本(如Vista和xp)中进行测试。

答案 4 :(得分:0)

除了之前的帖子:为了帮助您查找应用程序的问题,还有Application Compatibility Toolkit