Динамическая загрузка DLL с локального диска - PullRequest
0 голосов
/ 14 ноября 2018

Пока идет программирование, и вы обращаетесь к своим файлам в пакетах NuGet, программирование с зависимостями не так уж и сложно, но я создал приложение для расширения существующего приложения, которое опирается в основном на те же файлы dll, что и основная программа.

Теперь я не хочу фактически размещать расширение в нашем главном каталоге приложений, потому что удобнее иметь его универсальное и иметь возможность скопировать его пользователем или администратором в место, которое им нравится.

В псевдокоде код во время программирования выглядит следующим образом:

using Newtonsoft.Json;
...
public void xyz()
{
    JsonSerializer ObjectSerializer = new JsonSerializer();
    ... Do Stuff ...
}

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

Без динамического желания загрузить dll, код работает нормально, но я надеюсь, что что-то подобное будет возможно (in the Program.cs - without any using directives to 3rd party dlls!!! - namespace might be loaded anyway):

private static void Main(string[] args)
{
    string ProgramPath = FindProgramPath();
    System.Reflection.Assembly.LoadFrom(ProgramPath + @"System.Net.Http.Formatting.dll");
    System.Reflection.Assembly.LoadFrom(ProgramPath + @"Newtonsoft.Json.dll");
    ... Do Stuff
}

Следует ли обернуть логику в другой файл, который будет загружен в текущем контексте, возможно, в качестве ресурса, чтобы быть уверенным, что остальные необходимые файлы загружены соответственно? Или кто-то еще знает способ быть независимым от расположения папки, не раздувая фактический исполняемый файл?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...