【问题标题】:App with many assemblies forcing 32-bit具有许多强制 32 位程序集的应用程序
【发布时间】:2011-03-05 20:28:29
【问题描述】:

我有一个包含许多程序集和第三方实用程序的 VS 解决方案。在 64 位机器上运行时,我需要强制应用程序运行 32 位。该应用程序在 32 位机器上运行良好。我强制 .exe 文件只需要 32 位,当在 64 位机器上运行时,我收到“尝试加载格式不正确的程序”错误。我的理解是更改 exe 将强制所有程序集加载为 32 位。怎么回事?

【问题讨论】:

    标签: c# .net winforms 32bit-64bit 32-bit


    【解决方案1】:

    我知道这是一个老问题;也许你已经找到了答案。

    我不熟悉设置 ILONLY 和 32BITREQUIRED... 通常在编译之前在编译器下拉框中选择 x86 而不是 ANYCPU 来处理您需要的一切。您也可以在配置管理器中验证您的所有应用是否都设置为编译为 x86。

    您最有可能遇到的问题是您的第三方实用程序之一在 64 位机器上安装了 64 位 DLL,而您的强制 32 位应用程序正在尝试加载 64 位动态链接库。如果第三方 DLL 有 32 位和 64 位版本,安装程序很可能很聪明,知道应该放置哪一个。

    两个地方可以去64位机上检查:

    1. 如果程序安装到 C:\Program Files\,则为 64 位 DLL;否则它会被安装到 C:\Program Files (x86)\
    2. 从命令行导航到 GAC:c:\Windows\assembly 并查看 GAC_32 与 GAC_64。如果您在 GAC_64 下找到它,则说明您正在尝试加载 64 位 DLL

    HTH! 詹姆斯

    【讨论】:

      猜你喜欢
      • 2011-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-29
      • 2012-01-01
      • 2020-03-20
      • 2011-11-20
      • 2011-09-25
      相关资源
      最近更新 更多