Блок загрузки в Новом AppDomain, не загружая его в Родителе AppDomain

Я пытаюсь загрузить dll в консольное приложение и затем разгрузить его и удалить файл полностью. Проблема, которую я имею, состоит в том, что действие загрузки dll в его собственном AppDomain создает ссылку в Родителе AppDomain таким образом не разрешение мне уничтожить dll файл, если я полностью не закрыл программу. Какие-либо мысли о создании этой работы кода?

string fileLocation = @"C:\Collector.dll";
AppDomain domain = AppDomain.CreateDomain(fileLocation);
domain.Load(@"Services.Collector");
AppDomain.Unload(domain);

BTW я также попробовал этот код без удачи также

string fileLocation = @"C:\Collector.dll";
byte[] assemblyFileBuffer = File.ReadAllBytes(fileLocation);

AppDomainSetup domainSetup = new AppDomainSetup();
domainSetup.ApplicationBase = Environment.CurrentDirectory;
domainSetup.ShadowCopyFiles = "true";
domainSetup.CachePath = Environment.CurrentDirectory;
AppDomain tempAppDomain = AppDomain.CreateDomain("Services.Collector", AppDomain.CurrentDomain.Evidence, domainSetup);

//Load up the temp assembly and do stuff 
Assembly projectAssembly = tempAppDomain.Load(assemblyFileBuffer);

//Then I'm trying to clean up 
AppDomain.Unload(tempAppDomain);
tempAppDomain = null;
File.Delete(fileLocation); 
18
задан Al Katawazi 26 April 2010 в 16:30
поделиться

1 ответ

Хорошо, я решил здесь свою проблему. Очевидно, если вы вызовете AppDomain.Load, он зарегистрирует его в вашем родительском AppDomain. Так что ответ достаточно просто - не ссылаться на него вообще. Это ссылка на сайт, который показывает, как это правильно настроить.

https://bookie.io/bmark/readable/9503538d6bab80

5
ответ дан 30 November 2019 в 09:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: