Я объединил консольное приложение, которое ссылается на класс libray mylib.dll
в net45, с Утилита ILMerge .
Плагин (ы) загрузки консольного приложения во время выполнения, который реализует интерфейс.
Плагин ссылается на ту же библиотеку классов mylib.dll
, которая используется console.exe
Если я запускаю консольное приложение без слияния, оно может успешно загрузить плагин.
Команда объединения
ilmerge /out:"outdir\console.exe" console.exe *.dll
/target:exe /targetplatform:v4,C:\Windows\Microsoft.NET\Framework\v4.0.30319 /wildcards /ndebug
Но при объединении консольного приложения со всеми его зависимостями с использованием ILMerge плагин не может быть загружен и выдает исключение:
Исключение загрузчика: система.IO.FileNotFoundException: не удалось загрузить файл или сборку 'mylib.dll, версия = 3.0.0.0, культура = нейтральная, PublicKeyToken = null' или одна из ее зависимостей.Система не может найти указанный файл.Имя файла: 'mylib.dll, версия = 3.0.0.0, культура = нейтральная, PublicKeyToken = null'
Обходным решением, позволяющим избежать исключений, является плагин, ссылающийся на объединенное приложение console.exe.В этом случае он работает нормально без исключения, но я хочу, чтобы плагин ссылался на библиотеку классов, особенно на все DLL, на которые ссылается плагин, ссылается console.exe.
Вопрос:
Что я пропустил, чтобы убедиться, что все объединенные сборки, использующие ILMerge, видны плагину из консольного приложения и успешно загружены?