Выгрузить .net сборку динамически
От: DowJones  
Дата: 22.08.14 15:08
Оценка:
Добрый день!

Перерыл кучу информации в интернете, но что-то так ничего и не добился.
Создаю новый домен, загружаю в него сборку, потом домен выгружаю, а сборка все равно подцепленной остается...

//описываю  класс чтобы сборка создавалась только в новом домене
public class Proxy : MarshalByRefObject
{
     public Assembly GetAssembly(string assemblyPath)
     {
          try
          {
               return Assembly.LoadFile(assemblyPath);
          }
          catch (Exception)
          {
               return null;
          }
     }
}

//далее в коде
AppDomainSetup ads = new AppDomainSetup();
ads.ApplicationBase = Directory.GetCurrentDirectory();

AppDomain ad = AppDomain.CreateDomain("TestDomain", null, ads);//создаю домен
                
ad.SetShadowCopyFiles();//не знаю, насколько это надо 

Type type1 = typeof(Proxy);

var value = (Proxy)ad.CreateInstanceAndUnwrap(type1.Assembly.FullName, type1.FullName);//создаю экземпляр типа Proxy в новом домене

var ass = value.GetAssembly(cp.OutputAssembly);// загружаю сборку

//операции со сборкой 
//......
//

AppDomain.Unload(ad);
 
ad = null;

GC.Collect(2);();//не знаю, насколько это надо


Заранее спасибо...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.