Извините за ужасный заголовок.
У меня есть подписанная сборка 'Signed.dll', которая зависит от другой сборки, скажем, Executable.exe.
Signed.dll ссылается на COM DLL и публично предоставляет один из типов этой COM DLL: 'ComPublicT.'
Executable.exe должен ссылаться на автоматически сгенерированный Interop.COM.dll из подписанного проекта, а не добавлять ссылку на исходную COM DLL.
Ошибка представляет собой несоответствие типов между двумя разными типами ComPublicT из двух разных сборок взаимодействия COM.
Это требуется только в том случае, если Signed.dll подписан.
Кроме создания типа, имитирующего ComPublicT, как я могу разрешить исполняемому файлу ссылаться на COM DLL, а не на сборку взаимодействия COM подписанного?
Почему это происходит?
Edit, Вот несколько другая разбивка:
Подписанный проект ссылается на COM.dll и публично предоставляет тип из COM.dll.
При добавлении этой ссылки в Visual Studio автоматически создается Interop.COM.dll
Исполняемые ссылки и зависит от подписанного проекта
Обычно вы можете добавить ссылку на COM.dll, и все хорошо.
Поскольку Signed подписан, публично предоставленный тип Interop.COM.dll из Signed не рассматривается компилятором так же, как публично предоставляемый тип из исполняемого файла Interop.COM.dll
Исполняемый файл должен вручную ссылаться на Interop.COM.dll в Signed, который кажется хрупким.