应用程序有许多程序集强制32位

时间:2010-06-19 19:39:38

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

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

1 个答案:

答案 0 :(得分:1)

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

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

最有可能的是,您遇到的是第三方实用程序之一在64位计算机上安装了64位DLL,而您的强制32位应用程序正在尝试加载64位DLL。如果第三方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
  3. HTH! 詹姆斯