【发布时间】:2011-01-22 17:25:56
【问题描述】:
PostSharp 2.0 包含一个 CLR 主机并实现 IHostAssemblyStore::ProvideAssembly。
我从托管代码调用:
Assembly.Load("logicnp.cryptolicensing, Version=3.0.0.0, Culture=neutral,
PublicKeyToken=4a3c0a4c668b48b4")
我的 IHostAssemblyStore::ProvideAssembly 实现接收到第一个参数 pBindInfo 的以下输入:
0x002cd578 {
dwAppDomainId=1
lpReferencedIdentity=0x03c123f8 "logicnp.cryptolicensing, version=3.0.0.0,
culture=neutral, publickeytoken=4a3c0a4c668b48b4"
lpPostPolicyIdentity=0x03c14620 "logicnp.cryptolicensing, version=3.0.0.0,
culture=neutral, publickeytoken=4a3c0a4c668b48b4, processorarchitecture=x86"
}
然后我的实现返回正确的流。请注意,该文件的绑定标识是“logicnp.cryptolicensing, version=3.0.0.0,culture=neutral, publickeytoken=4a3c0a4c668b48b4”。
当我从 ProvideAssembly 返回此文件时,CLR 抛出以下异常:
Could not load file or assembly 'logicnp.cryptolicensing, Version=3.0.0.0,
Culture=neutral, PublicKeyToken=4a3c0a4c668b48b4' or one of its dependencies.
The located assembly's manifest definition does not match the assembly
reference. (Exception from HRESULT: 0x80131040)
所以我返回的程序集与 post-policy 引用不匹配,这是真的,但是这个 post-policy 引用不正确。
我想知道这个问题是否有任何解决方法,或者我是否误解了什么。
这对我来说是一个重要问题,我有很多用户在我们的支持论坛上抱怨。
PS。配置:CLR 2.0 x86 或 x64(已安装最新更新)、Windows 7 x64。
我还在 MSDN 论坛 http://social.msdn.microsoft.com/Forums/en/clr/thread/93efa20f-5423-4d55-aa3d-dadcc462d999 上发布了这个问题。
【问题讨论】: