开发者

PostSharp 2.0 BadImageFormatException

开发者 https://www.devze.com 2022-12-16 21:33 出处:网络
We have an application here which is using postsharp to wrap certain methods within a transaction aspect derived from MethodInterceptionAspect. We use NHibernate 2.0 as an ORM for the application. The

We have an application here which is using postsharp to wrap certain methods within a transaction aspect derived from MethodInterceptionAspect. We use NHibernate 2.0 as an ORM for the application. Ther开发者_运维百科e is a failure within this block of code,

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

that results in the following error: System.BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B) This only seems to happen for calls to save, and not delete or get calls.

I was wondering if anyone had encountered anything similar ever?


Yes, I've encountered this. Usually its a 64/32 bit problem. Check the target in your project settings.


Jfar is right; That exception means that you either have 64-bit code calling 32-bit code, or vice versa.

I've encountered it before as well.

Here are the steps I used to fix it:

  1. Check whether the host OS this is run on is 64-bit.
  2. Verify (for our debugging purposes) that the build is not targeting "Any-CPU". Force it to target 64 bit if all of the DLLs you're using are 64 bit (see steps #2 and #3), otherwise target 32-bit otherwise.

  3. Check your PostSharp download and make sure it's a 64-bit DLL.

  4. Check NHibernate 2.0, and make sure you're using the 64-bit version.

You cannot mix 32-bit DLLs and a 64-bit application (or vice-versa.

If none of that works, try the steps outlined here.


That's odd. What tells PEVERIFY if you execute it on PostSharp output?

0

精彩评论

暂无评论...
验证码 换一张
取 消