Проект My Visual Studio 2008 ссылается на две (внешние) сборки (A + B), которые оба ссылаются на одну и ту же третью сборку (C). Однако сборка A ожидает, что сборка C будет иметь открытый ключ, который отличается от того, что ожидает сборка B.Ссылка на две равные сборки, только открытые ключи отличаются
Вот пример очевидного исключения:
Не удалось загрузить файл или сборку 'Newtonsoft.Json, Version = 3.5.0.0, культура = нейтральной, PublicKeyToken = 9ad232b50c3e6444' или один из его зависимостей. Определение манифеста размещенной сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)
Ofcourse, я не был бы в состоянии поставить обе версии C (только различающиеся открытым ключом) в той же директории, так как их имена совпадают. Во-вторых, я обнаружил, что использование привязки сборки из файла конфигурации допускает только сопоставление версий, а не отображение открытого ключа.
Я также попытался поместить одну из сборок C в отдельный каталог и настроить CLR для поиска в этом каталоге при загрузке сборок. К сожалению, я не мог добиться этого.
Я знаю, что повторная компиляция одной из внешних библиотек (одна из которых, по-видимому, будет открыта) исправит эту проблему, но я не хочу добавлять это бремя к моему плану обслуживания, если это не является абсолютно необходимым.
Итак, мой вопрос: как бы я упоминал обе версии «сборки С», которые отличаются только открытым ключом?
UPDATE
я наткнулся на this answer на соответствующий вопрос, обеспечивая интересное решение с использованием ILMerge. Я еще не проверил это, но может быть полезно любому, кто борется с этой проблемой.
У меня была аналогичная проблема и [это] (http://stackoverflow.com/questions/2460542/using-different-versions-of-the-same-assembly-in-the-same-folder/2461746#2461746) как я это разрешил. –