2016-08-12 8 views
0

Я разрабатываю сборку C# .NET (имя: A.exe), которая должна быть задержана, а затем полностью подписана третьей стороной. Чтобы задержать знак, я использую открытый ключ. Сборка Образцы сборки 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, а затем разобрать и собрать все три сборки не изменили ссылки ... Чтобы решить проблему, то, что я собирался сделать, - это объединить все четыре сборки в одну единицу с задержкой, подписанную в качестве этапа post post A. Вы думаете, что это сработает?
Следует иметь в виду, что B.Core использует .NET MEF для динамической загрузки экспортированных интерфейсов из A. Будет ли в этом процессе возникнуть проблема?

Заранее спасибо за помощьЗаблокированная цепочка сборок

+0

Правильный способ указать, что ваша проблема решена, - это принять ответ (выбирая галочку рядом с ответом, который решает вашу проблему). Нет проблем * с отправкой ответа самостоятельно (хотя есть время, прежде чем вы сможете его принять). Простое правило состоит в том, что вопросы относятся к вопросам, а ответы принадлежат ответам. Я предлагаю вам извлечь ответ из нижней части вашего вопроса, отправить его * в качестве ответа * и в свое время принять его. –

+0

Спасибо, я следовал твоему предложению. – peval27

ответ

0

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

MEF выполнил работу без жалоб.