Я пытаюсь создать клиентский программный пакет .NET, который загружает его компоненты по требованию.
Допустим, у меня есть программа, которая разбита на основной исполняемый файл и 20 других DLL-файлов. Основная программа ссылается на 3 из них, в любом случае они ссылаются на некоторые другие ... у них есть какая-то древовидная структура зависимости.
Я пытаюсь добиться того, чтобы распространять только основной исполняемый файл и получать все остальное из расположения сервера по требованию.
Примерно так:
Основная программа и все эти проекты DLL находятся в одном решении и строятся вместе, как и любое другое решение.
При распространении распространяется только exe-файл, остальные dll (включая некоторые используемые сторонние библиотеки) помещаются в расположение сервера, доступное для загрузки.
exe запускается, показывает некоторый пользовательский интерфейс, когда пользователь щелкает по пункту меню, должно быть показано другое окно пользовательского интерфейса из одного файла dll, так что операционная система ищет dll (которого там нет), я вмешиваюсь, скачиваю Требуется dll с сервера, поместите его рядом с исполняемым файлом и позвольте ОС загрузить его, как если бы он был там с самого начала.
Это выглядит достижимым благодаря использованию общего класса Interface и некоторой магии отражения, но я надеялся на что-то большее, то, что включает в себя создание библиотеки dll в одном решении, то, что включает в себя загрузку сторонних библиотек по требованию .
Есть идеи, как это сделать?