PostSharp 2.0 BadImageFormatException

时间:2010-01-21 01:03:52

标签: asp.net-mvc postsharp

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

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

导致以下错误:System.BadImageFormatException:尝试加载格式不正确的程序。 (HRESULT异常:0x8007000B) 这似乎只发生在保存,而不是删除或获取呼叫的调用上。

我想知道是否有人遇到过类似的东西?

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

我之前也遇到过它。

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

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

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

  4. 检查NHibernate 2.0,确保您使用的是64位版本。
  5. 无法混合使用32位DLL和64位应用程序(反之亦然。

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

答案 2 :(得分:0)

这很奇怪。 什么告诉PEVERIFY你是否在PostSharp输出上执行它?