首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当应用于泛型方法时,PostSharp会导致BadImageException --运行peverify.exe时出现错误

当应用于泛型方法时,PostSharp会导致BadImageException --运行peverify.exe时出现错误
EN

Stack Overflow用户
提问于 2010-07-03 01:26:40
回答 2查看 614关注 0票数 0

我刚刚将一个项目从VS2008/.NET3.5/PostSharp1.5升级到VS2010/.NET4.0/PostSharp2.0。

现在,当为系统运行单元测试时,我得到hundered异常,形式为:

System.BadImageFormatException:试图加载格式不正确的程序。(来自HRESULT的异常: 0x8007000B)在COMPANY.Data.NHibernate.BaseRepository.c__Binding`1.Invoke(Object&实例中,参数,在COMPANY.Aop.TransactionAspectAttribute.OnInvoke(MethodInterceptionArgs上下文的PostSharp.Aspects.Internals.MethodInterceptionArgsImpl.Proceed()处的对象aspectArgs)在C:\COMPANY\Code\COMPANY-NET4.0\Core\DataAccess\NHibernate\BaseRepository.cs:line 102中的COMPANY.UnitTests.DataAccess.NHibernate.when_saving_a_canonical_term.<.ctor>b__5处的COMPANY.Data.NHibernate.BaseRepository.SaveT处的C:\COMPANY\Code\COMPANY-NET4.0\Core\Aop\TransactionAspectAttribute.cs:line 68中的对象()在Machine.Specifications.Utility.RandomExtensionMethods.InvokeIfNotNull(Because的C:\COMPANY\Code\COMPANY-NET4.0\UnitTests\DataAccess\NHibernate\CanonicalTermRepositorySpecs.cs:line 29中,因为)在Machine.Specifications.Model.Context.EstablishContext()

当我在程序集上运行peverify.exe时,我在下面的表单中看到了成百上千的错误。泛型方法似乎总是有问题:

IL:错误: C:\COMPANY\Code\COMPANY-NET4.0\Core\bin\Debug\COMPANY.Core.dll : COMPANY.Data.NHibernate.ActivationRepository+c__Binding::Invokefound引用'PostSharp.Aspects.Internals.MethodBinding'expected引用'PostSharp.Aspects.Internals.MethodBinding`1COMPANY.Models.Activation']堆栈上的意外类型。

IL:错误: C:\COMPANY\Code\COMPANY-NET4.0\Core\bin\Debug\COMPANY.Core.dll : COMPANY.Data.NHibernate.ActivationRepository+c__Binding::Invokefound引用'PostSharp.Aspects.Internals.MethodBinding`1[COMPANY.Models.Activation]‘堆栈上的意外类型。

我正在运行最新版本的PostSharp 2.0RC。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-03 02:03:51

这个问题在这里得到了解决:http://www.sharpcrafters.com/forum/Topic4896-19-1.aspx

票数 1
EN

Stack Overflow用户

发布于 2010-07-03 01:38:43

"System.BadImageFormatException“通常表示64位/32位问题。

如果你为“任何CPU”编译代码,并在64位处理器上运行它,它将被JIT编译成64位。如果它随后调用任何32位代码(例如,在非托管dll中),当它试图从64位代码跳转到32位代码时,您将得到此异常。

如果您在64位操作系统上运行,则可能是升级过程中的某些原因导致您的程序混合了32位和64位代码。如果你在32位操作系统上运行,那么就不会有问题,但在这种情况下,它可能表明二进制文件已损坏。

如果它是32/64,那么你可以这样做:-确保你使用的所有all与你的应用是相同的位数,或者-如果你不能用64位版本替换一些32位的all,试着把你的应用编译成"x86“而不是"Any CPU”。这将迫使它被编译成32位代码,即使在64位PC上也是如此,这意味着它必须作为32位应用程序在WoW64下运行,但它将与32位动态链接库兼容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3167832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档