【问题标题】:PostSharp 2.0 BadImageFormatExceptionPostSharp 2.0 BadImageFormatException
【发布时间】:2011-06-24 21:25:57
【问题描述】:

我们这里有一个应用程序,它使用 postsharp 将某些方法包装在从 MethodInterceptionAspect 派生的事务方面中。我们使用 NHibernate 2.0 作为应用程序的 ORM。这段代码有故障,

public override void OnInvoke(MethodInterceptionArgs args)
{
    using (TransactionScope transaction = CreateTransactionScope())
    {
        args.Proceed();
        transaction.Complete();
    }
}

这会导致以下错误:System.BadImageFormatException:尝试加载格式不正确的程序。 (来自 HRESULT 的异常:0x8007000B) 这似乎只发生在保存电话上,而不是删除或接听电话。

我想知道是否有人遇到过类似的事情?

【问题讨论】:

    标签: asp.net-mvc postsharp


    【解决方案1】:

    是的,我遇到过这种情况。通常是 64/32 位问题。检查项目设置中的目标。

    【讨论】:

    • 目标被设置为任何 cpu,在我的例子中是 x64。我相当肯定这不是 64/32 位问题,因为整个堆栈都是 64 位的。
    • + 1. 我几乎保证这是一个 x64/32 位问题。
    【解决方案2】:

    Jfar 是对的;该异常意味着您有 64 位代码调用 32 位代码,反之亦然。

    我以前也遇到过。

    以下是我用来修复它的步骤:

    1. 检查运行此系统的主机操作系统是否为 64 位。
    2. 验证(用于我们的调试目的)构建不是以“Any-CPU”为目标。如果您使用的所有 DLL 都是 64 位的(请参阅步骤 #2 和 #3),则强制它以 64 位为目标,否则以 32 位为目标。

    3. 检查您的 PostSharp 下载并确保它是 64 位 DLL。

    4. 检查 NHibernate 2.0,并确保您使用的是 64 位版本。

    不能混合使用 32 位 DLL 和 64 位应用程序(反之亦然。

    如果这些都不起作用,请尝试步骤outlined here

    【讨论】:

      【解决方案3】:

      这很奇怪。 如果您在 PostSharp 输出上执行 PEVERIFY,会告诉什么?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-01-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-03
        • 2020-10-08
        • 2013-04-01
        相关资源
        最近更新 更多