Задержка подписанной сборки цепочки

Я разрабатываю сборку C# .NET (имя: A.exe), которая должна быть с задержкой подписана, а затем полностью подписана сторонней компанией. Чтобы отложить подписку, я использую открытый ключ. Сборка A содержит ссылки на сборки B.Core.dll, B.Common.dll, B.Logging.dll, которые являются частью общей библиотеки. B-сборки не подписаны с задержкой, поэтому я использую ildasm / ilasm, чтобы разобрать их и собрать сборку с задержкой. Я отправил A.exe и B.Core.dll, B.Common.dll, B.Logging.dll, и теперь они полностью подписаны, однако при запуске A выдают ошибку:

Не удалось загрузить файл или сборку 'Assembly B1 PublicKeyToken=null'

Проблема не должна быть связана с A.exe, так как он ссылается на задержку подписанных сборок (для свойства Strong Name установлено значение True), но я подозреваю, что виновником является B.Core.
Действительно, B.Core ссылается на B.Common и B.Logging, тогда как B.Common и B.Logging независимы друг от друга.
Причиной ошибки может быть то, что B.Core изначально был создан с использованием не подписанной сборки B.Common, а затем разобрал и собрал все три сборки, не изменив ссылки... Чтобы решить проблему, я был Мы думаем о том, чтобы объединить все четыре сборки в одну подписанную сборку с задержкой как шаг после сборки A. Как вы думаете, это будет работать?
Следует иметь в виду, что B.Core использует.NET MEF для динамической загрузки экспортируемых интерфейсов из A. Будет ли этот процесс представлять проблему?

Заранее спасибо за помощь

1 ответ

Решение

Я нашел решение: мне удалось использовать ILMerge для объединения четырех сборок в одну, поэтому все работало как положено. Даже символы отладки были "объединены" в один файл PDB (хитрость заключалась в том, чтобы B.Core.pdb, B.Common.pdb и B.Logging.pdb находились в одной папке соответствующих сборок).

MEF сделал работу без жалоб.

Другие вопросы по тегам