Загрузка и выгрузка dll

подскажите пожалуйста, каким образом вы бы загрузили .dll файл, а далее выгрузили файл?

1 вариант:

var process = Process.Start(@"D:\\source\\repos\\CreateDll\\bin\\Debug\\CreateDll.dll");
Thread.Sleep(5000);
process.Kill();

Проблема в том что dll написана на c#, а по этому просто запустить dll не достаточно, нужно еще вызвать функцию!

2 вариант:

var dll = Assembly.LoadFile(@"D:\\source\\repos\\CreateDll\\bin\\Debug\\CreateDll.dll");
    
foreach (Type type in dll.GetExportedTypes())
{
    dynamic c = Activator.CreateInstance(type);
    type.InvokeMember("Main", BindingFlags.InvokeMethod, null, c, null);
}

Данный вариант не подходит, так как нельзя остановить работу функции прям во время ее работы.

3 вариант:

Использование класса AssemblyLoadContext, но о нем я мало что знаю и использовать не умею

4 вариант:

AppDomain domain = AppDomain.CreateDomain("domain name");
// TODO: configure appdomain as needed
// to load the dll and get a type you can reference in your current appdomain
string pathToDll = @"C:\somedir\Mydll.dll";
Type myType = typeof(SomeType);
SomeType myObj = (SomeType)domain.CreateInstanceFromAndUnwrap(pathToDll, > myType.FullName);
// to just load the dll into the new appdomain
byte[] file = File.ReadAllBytes(pathToDll);
domain.Load(file);

О нем тоже к сожалению мало что знаю, и по этому тоже аналогично использовать не умею

ссылки на мои вопросы по этой теме:

Как через GetProcAddress вызвать функцию из dll

Как написать такую библиотеку чтобы можно было запустить файл на определенное время [дубликат]

Запуск .dll файла на определенное время

Добавить dll на несколько секунд


Ответы (0 шт):