PostSharp 2.0 BadImageFormatException

6
我们这里有一个应用程序,它使用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个回答

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

目标设置为任何 CPU,这在我的情况下是 x64。我相当确定这不是一个 64/32 位问题,因为整个堆栈都是 64 位的。 - intervigil
我几乎可以保证这是一个 x64/32 位问题。 - David Masters

1

Jfar是正确的;这个异常意味着你要么有64位代码调用32位代码,要么反过来。

我之前也遇到过这个问题。

以下是我用来解决它的步骤:

  1. 检查此程序运行的主机操作系统是否为64位。
  2. 验证(出于我们的调试目的)构建不要针对“任何 CPU”进行。如果您使用的所有DLL都是64位,请强制将其定位到64位(请参见步骤#2和#3),否则定位到32位。

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

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

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

如果以上方法都不起作用,可以尝试按照这里列出的步骤进行操作。

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接