【问题标题】:IHostAssemblyStore::ProvideAssembly causes exception "The located assembly's manifest definition does not match the assembly reference"IHostAssemblyStore::ProvideAssembly 导致异常“定位的程序集的清单定义与程序集引用不匹配”
【发布时间】: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 上发布了这个问题。

【问题讨论】:

    标签: c# .net c++ hosting clr


    【解决方案1】:

    问题已在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(如文档中所述)。

    【讨论】:

      猜你喜欢
      • 2020-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-10
      • 2015-01-29
      • 2018-10-13
      • 1970-01-01
      • 2011-08-20
      相关资源
      最近更新 更多