Dll-Hell создание своего Assembly Manifest на внешнюю сборку.
От: Artemoniks  
Дата: 26.11.12 11:40
Оценка:
Есть такая проблема: есть сборки, сделанные другим производителем, так получилось, что разработчик не позаботился о Dll-Hell и не прописал сертификаты к своим сборкам. Меня настигла эта проблема. Как выход, появилась идея прописать всем сборкам сертификаты собственноручно.
Пишу сертификат для сборки Lib1.dll, которая должна использовать сборку Lib2.dll

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:s chemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
type="win32"
name="Man.Prod.Lib1"
version="1.93.181.0"
processorArchitecture="x86"
/>

<file name="Lib2.dll"></file>

<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Man.Prod.Lib2"
version="1.75.181.0"
/>
</dependentAssembly>
</dependency>
</assembly>


Сертификат для Lib2.dll:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:s chemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
type="win32"
name="Man.Prod.Lib2"
version="1.75.181.0"
processorArchitecture="x86"
/>
</assembly>


пытаюсь зарегистрировать Lib1.dll
regsvr32 Lib1.dll


Получаю ошибку:

Ошибка при создании контекста активации для "C:\Program Files (x86)\Prod\Lib1.dll". Не найдена зависимая сборка "Man.Prod.Lib2,type="win32",version="1.75.181.0"". Используйте sxstrace.exe для подробной диагностики.


sxstrace.exe — не помогает.

Библиотеки лежат в одной папке.

Без <dependency> все регистрируется замечательно.

Регистрирую Lib1.dll, так как по другому ее просто не добавить в проект.

в WinSxS ни одна библиотека не прописана, не уверен, что это нужно...
По крайней мере это затруднительно, ввиду того, что нужно подписывать библиотеки, а подписать com библиотеки у меня пока не получилось.. это не так уж и просто..

Возможно такое, что в сертификате не прописаны COM классы ? Их там туча просто.
Обязательно ли в сертификате прописывать все COM классы ? Как я понял отсюда есть только 2 обязательных элемента, это — assembly и assemblyIdentity.

Тогда в чем проблема ?

Кто-нибудь, кто делал WinSxS сертификаты или хотя бы писал для COM помогите, поделитесь опытом, а то я уже совсем, честно говоря, запутался.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.