Есть такая проблема: есть сборки, сделанные другим производителем, так получилось, что разработчик не позаботился о 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 помогите, поделитесь опытом, а то я уже совсем, честно говоря, запутался.