【问题标题】:32bit binaries on sharepoint 64bit, An attempt was made to load a program with an incorrect formatsharepoint 64bit 上的 32bit 二进制文件,尝试加载格式不正确的程序
【发布时间】:2010-01-25 14:41:13
【问题描述】:

我有很多共享点网络部件等,所有这些都是为任何 cpu 编译的,它们在 32 位共享点上运行良好,但在 64 位移动到服务器 2008 会导致以下错误:

试图加载格式不正确的程序。 (HRESULT 异常:0x8007000B)

根据我的阅读,它们应该都可以正常工作吗?

【问题讨论】:

    标签: c# sharepoint 64-bit


    【解决方案1】:
    1. 64 位进程无法加载 32 位 DLL,反之亦然。
    2. IIS 是 64 位硬件上的 64 位进程。可以单独配置 应用程序池运行 32 位,但是...
    3. Sharepoint 最有可能运行 64 位。

    因此,您的程序集及其所有依赖程序集和 DLL 必须运行 64 位。

    请注意,标记为“任何 CPU”的 .NET 程序集将在 64 位硬件上以 64 位运行。但是,任何本机 DLL 都需要在本机编译为 64 位。

    【讨论】:

    • 好的,谢谢,我将不得不更多地探索代码,并找出我们是否正在使用任何其他可能导致问题的 DLL,我认为唯一的依赖项是 microsoft.sharepoint dll ,并且安装了 64 位共享点,这应该不是问题。
    • @Nathan,你依赖任何进程内 COM 对象吗?那些需要是 64 位的(上面的第 1 点)。
    • 不,没有 COM 的东西,也没有 64 位 dll,除了我们制作的,它们都是为任何 CPU 编译的,所以也应该工作,大多数部分工作正常,但只有少数 Web 部件有这个错误,并且如果你调试它们,它们只会循环渲染函数。
    • 这里的解决方案是什么?我有一个必须构建 x64 的类库。我还通过一个将在 64 位硬件上运行的 Web 应用程序公开这个类库。由于出现以下错误,我无法构建或部署..
    • [BadImageFormatException: 无法加载文件或程序集 'ClassLibrary64,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null' 或其依赖项之一。试图加载格式不正确的程序。]
    【解决方案2】:

    您不能混合使用 32 位和 64 位程序集。您唯一的选择是将二进制文件重建为 x64。

    您可以在 64 位操作系统上运行 32 位二进制文​​件/库,但同样不能将它们混合在一起。

    【讨论】:

      猜你喜欢
      • 2011-05-19
      • 2012-07-07
      • 1970-01-01
      • 1970-01-01
      • 2014-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多