Я пытаюсь решить следующую проблему: [.Net 2.0, CLR 2.5.something, 64-битный компьютер, все DLL и EXE-файлы выглядят скомпилированными для «любого процессора» в соответствии с corflags]
Я поддерживаюустаревшее приложение, которое использует стороннюю DLL.Совершенно неожиданно (насколько я могу судить) функциональность, зависящая от DLL, перестала работать на одной из машин, на которых она развернута, со следующей ошибкой:
Не удалось загрузить файл или сборку 'Interop.Merge70, версия = 7.0.0.0, культура = нейтральная, PublicKeyToken = null 'или одна из ее зависимостей.Определение манифеста обнаруженной сборки не совпадает со ссылкой на сборку.
Я просмотрел манифест DLL, а также AssemblyRef (использованный инструмент ildasm) в исполняемом файле приложения и единственном экземпляре.Разница, которую я мог бы найти, состоит в том, что DLL строго подписана (?), но согласно AssemblyRef DLL не подписана.Теперь, оставив в стороне тот факт, что если это проблема - как это работало до сих пор?(поскольку у меня есть только слово пользователя для этого ;-))
Как я могу отредактировать манифест приложения, чтобы изменить AssemblyRef для подписи его открытым ключом, как это указано в манифесте DLL? (Также, как ни странно, у меня нет кода для устаревшей версии, я в идеале ищу как решение для exe-редактирования, так и кое-что для VS2008 для текущей версии приложения)
Обновление выясняется, что в текущей версии, в которой у меня есть код, поле "ключ или токен" в коде, в котором используется сторонняя программа, содержит правильный токен, извлеченный из "sn -"Tp 3rdparty.dll ".. но при запуске выдается такая же ошибка ... Чего мне здесь не хватает?