Так что моя проблема сводится к экономии памяти.Загрузить сборку в новый домен приложения, но не CurrentDomain
По сути, мне нужно загрузить сборку в отдельный домен приложения, отличный от основного/текущего домена, проверить типы внутри этой сборки и затем выгрузить новый домен по завершении.
В настоящее время мое решение выглядит следующим образом:
AppDomain NewDomain = AppDomain.CreateDomain("newdomain");
foreach(string path in dllPaths) //string list of dll paths
{
byte[] dllBytes = File.ReadAllBytes(dll);
NewDomain.Load(dllBytes); //offending line
}
DoStuffWithNewDomain();
AppDomain.Unload(NewDomain);
NewDomain.Load линия, кажется, чтобы загрузить сборку в новый домен, но и в текущей области моей программы.
Я использовал эту ссылку в качестве эталона - http://www.csharp411.com/how-to-load-a-net-assembly-into-a-separate-appdomain-so-you-can-unload-it/
Большое спасибо :)
Интересно, если она не имеет ничего общего с документацией для [ 'AppDomain.Load метод (Byte [])'] (http://msdn.microsoft.com/en-us/library/7hcs6az6% 28v = vs.110% 29.aspx), который гласит: «Этот метод следует использовать только для загрузки сборки в текущий домен приложения. ... Чтобы загрузить сборки в другие области приложений, используйте такой метод, как CreateInstanceAndUnwrap.' –