【问题标题】:Changing development environment to 64 bit Windows 7 - app crashes将开发环境更改为 64 位 Windows 7 - 应用程序崩溃
【发布时间】:2012-03-21 05:11:54
【问题描述】:

我使用 Windows XP 32 位开发机器维护最初在 Visual Studio 2005 框架 2.0 中构建的应用程序。

我的新开发机器是 Windows 7 64 位。

我将我的解决方案加载到 Visual Studio 2010 并成功转换了所有项目(实际应用程序使用了几个),并更新到了 Framework 4.0。

在调试模式下,应用程序运行没有问题。

现在,它的工作方式是只部署了一个安装程序。更改部署到服务器。当应用程序在安装后运行时,它实际上会运行一个更新程序应用程序来检查服务器上的文件更改,如果发现,然后下载它们,替换客户端上的原始文件,然后“真正的”应用程序是运行。

在将我在 64 位机器上编译的第一个版本部署到服务器后,我运行了已安装的应用程序版本以测试它是否工作正常。更新程序似乎工作正常,但是当它启动“真实”应用程序时,它崩溃了。

在 Windows 7 上运行,它会崩溃:

错误应用程序名称:ProviderDesktop.exe,版本:2.6.0.0,时间戳:0x4f4fad5e 错误模块名称:KERNELBASE.dll,版本:6.1.7600.16850,时间戳:0x4e211485 异常代码:0xe0434352 故障偏移:0x0000b9bc 错误进程 ID:0x2388 错误的应用程序启动时间:0x01ccf8971407b4fe 错误的应用程序路径:C:\Program Files (x86)\UHINt2.5\ProviderDesktop.exe 错误模块路径:C:\Windows\syswow64\KERNELBASE.dll 报告 ID:53717437-648a-11e1-a455-8a2e36aa00e8

在 XP 上运行,它会崩溃:

事件类型:clr20r3 P1:providerdesktop.exe P2:2.6.1.1
P3:4f4fad5e P4:providerdesktop P5:2.6.1.1 P6:4f4fad5e
P7:85d P8:0 P9:system.io.fileloadexception

在谷歌搜索问题后,到目前为止,我已经进行了 2 次诊断。

首先,我尝试了 Fusion 日志记录。什么都没找到。

其次,我尝试了 DependencyWalker,在 Windows 7 开发机器上加载了错误的应用程序。它显示了一个丢失的 IESHIMS.DLL。参考this 帖子,我找到了 IESHIMS.DLL,但在 DependencyWalker 中注意到它实际上希望 DLL 位于应用程序的根文件夹中。我把它放在那里,重新运行 DependencyWalker,那个错误就消失了。但是,我强烈怀疑另一个错误是问题的根本原因:错误:发现具有不同 CPU 类型的模块。

DependencyWalker 中列出的每个模块都是 x64,除了 ieshims.dll 和我的实际 .exe 是 x86。 Updater 和 Real 应用都针对 x86 平台。

之前有同事建议我可能会因为 Real 应用中的 3rd 方引用而遇到问题。从我在这里看到的情况来看,情况似乎并非如此。

如果有人能帮我解决这个问题,我会非常感激,因为我对 x86/x64 等较低级别的概念确实知之甚少。这意味着在 2010/.NET 4.0 中在一台快速的机器上进行开发与仅针对具有严重性能问题并在 2005/.NET 2.0 中开发的这个应用程序而必须保留一个 XP/32 左右的 VM 之间的区别。

我的目标是能够在 Win7x64、2010、4.0 上开发应用程序,并让更新程序毫无问题地更新客户端的应用程序版本。

非常感谢。

【问题讨论】:

    标签: .net frameworks 32bit-64bit


    【解决方案1】:

    我从未尝试过混合明确针对 32 位和 64 位的程序集。

    您是否尝试将所有目标更改为 Any CPU?

    【讨论】:

      【解决方案2】:

      .Net 如果不包含不安全代码,则可以在 64 位机器上完美运行。大多数时候不安全的代码需要更正才能在本机 64 位模式下工作。

      但是,您可以要求您的应用程序在 WOW(Windows 上的 Windows)模式下工作,在这种情况下,您的应用程序将完全像在 32 位机器上一样工作。它在项目属性中启用,将 Platform target 设置为 x86 而不是 Any CPU。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-22
        • 2015-04-19
        • 1970-01-01
        • 2010-12-23
        • 2015-11-07
        相关资源
        最近更新 更多