IHostAssemblyStore :: ProvideAssembly вызывает исключение «Определение манифеста обнаруженной сборки не соответствует ссылке на сборку» - PullRequest
1 голос
/ 02 марта 2010

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.

1 Ответ

1 голос
/ 25 марта 2010

На вопрос ответили http://social.msdn.microsoft.com/Forums/en/clr/thread/93efa20f-5423-4d55-aa3d-dadcc462d999.

По сути, это ошибка документации:

Вместо возврата ERROR_FILE_NOT_FOUND из IHostAssemblyStore :: ProvideAssembly (как указано в документации), реализация хоста должна возвращать COR_E_FILENOTFOUND (определено в corerror.h).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...