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, версия = 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.