我们这里有一个应用程序,它使用postsharp来包装从MethodInterceptionAspect派生的事务方面中的某些方法。我们使用NHibernate 2.0作为应用程序的ORM。这段代码中存在失败,
public override void OnInvoke(MethodInterceptionArgs args)
{
using (TransactionScope transaction = CreateTransactionScope())
{
args.Proceed();
transaction.Complete();
}
}
导致以下错误:System.BadImageFormatException:尝试加载格式不正确的程序。 (HRESULT异常:0x8007000B) 这似乎只发生在保存,而不是删除或获取呼叫的调用上。
我想知道是否有人遇到过类似的东西?
答案 0 :(得分:1)
是的,我遇到过这个。通常是64/32位问题。检查项目设置中的目标。
答案 1 :(得分:1)
Jfar是对的;该异常意味着您要么使用64位代码调用32位代码,反之亦然。
我之前也遇到过它。
以下是我用来修复它的步骤:
验证(为了我们的调试目的)构建不定位“Any-CPU”。如果你使用的所有DLL都是64位,则强制它以64位为目标(参见步骤#2和#3),否则以32位为目标。
检查PostSharp下载并确保它是64位DLL。
您无法混合使用32位DLL和64位应用程序(反之亦然。
如果这些都不起作用,请尝试步骤outlined here。
答案 2 :(得分:0)
这很奇怪。 什么告诉PEVERIFY你是否在PostSharp输出上执行它?