Загрузка и выгрузка 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
Как написать такую библиотеку чтобы можно было запустить файл на определенное время [дубликат]