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"
}
然后,我的实现返回正确的流。请注意,该文件的绑定(bind)身份为“logicnp.cryptolicensing,版本= 3.0.0.0,区域性=中性,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)
因此,我返回的程序集与策略后引用不匹配,这是正确的,但是此策略后引用不正确。
我想知道是否有解决此问题的方法,或者我误会了什么。
这对我来说是一个重要问题,我的支持论坛上有很多用户在抱怨。
PS。配置:CLR 2.0 x86或x64(已安装最新更新),Windows 7 x64。
我还将这个问题发布在MSDN论坛http://social.msdn.microsoft.com/Forums/en/clr/thread/93efa20f-5423-4d55-aa3d-dadcc462d999上。
最佳答案
这个问题已经在http://social.msdn.microsoft.com/Forums/en/clr/thread/93efa20f-5423-4d55-aa3d-dadcc462d999上得到了回答。
基本上,这是一个文档错误:
主机实现应返回COR_E_FILENOTFOUND(在corerror.h中定义),而不是从IHostAssemblyStore::ProvideAssembly返回ERROR_FILE_NOT_FOUND(如文档中所指定)。
关于c# - IHostAssemblyStore::ProvideAssembly导致异常 “The located assembly'的 list 定义与程序集引用不匹配”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2363284/