Необработанное исключение: System.IO.FileNotFoundException: не удалось загрузить файл или сборку 'XYZ.dll' или одну из ее зависимостей - PullRequest
0 голосов
/ 13 февраля 2020

Я работаю над попыткой заставить старую программу перекомпилироваться и запускаться, и у меня возникают проблемы с получением dll для ссылки на ее зависимости во время выполнения.

Я скомпилировал программу (решение это файл .sln) в Visual Studio 2015. Когда я go запускаю один из встроенных исполняемых файлов, я получаю следующую ошибку:

Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'XYZ.dll' or one of its dependencies. The specified module could not be found.

Я использовал VS2015 Командная строка x86 ARM Cross Tools для запуска команды:

dumpbin /dependents XYZ.dll

, чтобы получить список зависимостей XYZ.dll, который появляется со списком:

    VCRUNTIME140.dll
    api-ms-win-crt-runtime-l1-1-0.dll
    api-ms-win-crt-heap-l1-1-0.dll
    KERNEL32.dll
    ABC.dll
    mscoree.dll

где AB C .dll - еще одна DLL в той же папке. Я проверил, и все остальные файлы находятся в C: \ Windows \ System32. У меня нет доступа к DependencyWalker, так как мой компьютер использует windows 10, но я использовал команду git bash ldd , и когда я запускаю

ldd XYZ.dll

Я получаю результат

KERNEL32.DLL => /c/WINDOWS/System32/KERNEL32.DLL (0x7ffc60750000)
        ??? => ??? (0x7ffc588a0000)
        ??? => ??? (0x7ffc3c8d0000)
        ??? => ??? (0x7ffc50fa0000)
        ??? => ??? (0x7ffc378b0000)

(Я не перечислил все остальные dll, которые перечислены, но KERNEL32.dll был единственным .dll-файлом, который был показан с использованием dumpbin, который показал вверх в списке ldd). Когда я go в VS 2015 в свойствах проекта, KERNEL32.DLL отображается в Компоновщик -> Ввод -> Дополнительные зависимости.

Я попытался переместить все зависимости dll XYZ.dll в в ту же папку, где он находится. Я переустановил распространяемый Microsoft Visual C + 2015 (x64) и распространяемый Microsoft Visual C + 2015 (x86). Я посмотрел на зависимости других проектов в рамках решения. Например, когда я запускаю

ldd DEF.dll

, он может найти

 VCRUNTIME140.dll => /c/WINDOWS/SYSTEM32/VCRUNTIME140.dll (0x7ffc3c8d0000)

Любые идеи о том, как это исправить, приветствуются!

Дополнительная информация:

Появляется одно и то же сообщение об ошибке при компиляции в режиме Release или Debug. Платформа активного решения - x64.

...