Ошибка внедрения EEFileLoadException * __ptr64
Следующий проект: AssemblyA.dll (содержит основные элементы) AssemblyB.dll (стала внедрена) app.exe (графический интерфейс для запуска инъекции)
Я запускаю свое приложение для поиска конкретного работающего процесса (для тестирования простого wpf-приложения). После запуска этих приложений я бы начал свою инъекцию DLL. Для этого я зацикливаюсь на каждом процессе. Найдя искомый, я начинаю вводить свою сборку. До этого момента все в порядке. Когда он вводится, я отправляю сообщение через
::SendMessage((HWND)handle.ToPointer(), MESSAGE, (WPARAM)assemblyPath, 0);
Параметр path содержит информацию о моем AssemblyB(имя сборки, имя типа, имя метода), параметр сообщения содержит только "invoke", чтобы проверить, какую программу действий следует выполнить.
Наконец, я бы начал конкретный метод через
methodInfo->Invoke(nullptr, nullptr);
Но этот вызов не работает, потому что моя целевая сборка ссылается на assemblyA.dll, и я получаю следующее исключение:
EEFileLoadException * __ptr64 at position 0x00309940..
[...] [rethrow] at position 0x00000000..
Обнаружен помощник для неуправляемой отладки "BindingFailure" в "path\WpfApplication1.exe". Сборка с именем:"AssemblyA" не может быть загружена в "Anonymous"-связывающий контекст AppDomain с идентификатором 1. Ошибка: System.IO.FileNotFoundException: файл или Assembly "AssemblyA, версия =1.0.0.0, Culture= нейтральная, PublicKeyToken=null"или зависимость не найдена.
Поэтому я думаю, что WpfApplication нужна ссылка на мой AssemblyA, потому что, если я помещаю копию в путь выполнения Applications, он работает нормально. Есть ли возможность "сохранить" сборку A в сборке B при ее сборке? Или это другая ошибка? что я должен изменить?