Prehistorik, пожалуйста:
| Код | using System; using System.Reflection; using System.IO;
class Program { static void Main() { // создаём класс-worker, выполняющий метод в отдельном домене AnotherDomainAssemblyLoader loader = new AnotherDomainAssemblyLoader(@"c:\reflector.exe");
// создаём домен, вызываем метод, выгружаем домен AppDomain domain = AppDomain.CreateDomain("bla-bla-bla"); domain.DoCallBack(loader.LoadAssemblyAndDisplayInfo); AppDomain.Unload(domain);
// всё, сборку можно даже удалить, она не заблокирована File.Delete(@"c:\reflector.exe"); } }
// класс-worker для работы в отдельном домене
[Serializable] public class AnotherDomainAssemblyLoader { public string AssemblyPath;
public AnotherDomainAssemblyLoader(string assemblyPath) { this.AssemblyPath = assemblyPath; }
public void LoadAssemblyAndDisplayInfo() { // грузим сборку в отдельном домене и выводим информацию в консоль Assembly assm = Assembly.LoadFile(this.AssemblyPath); Console.WriteLine(assm.GetName().Version); // версия assembly Console.WriteLine(assm.CodeBase); // полный путь к assembly } } |
|