.NET AppDomain и Assembly

Тема в разделе "LANGS.C", создана пользователем DimaZ, 17 июл 2008.

  1. DimaZ

    DimaZ New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2008
    Сообщения:
    1
    Привет!
    Пишу хост для remoting и планирую загружать сборки в отдельные домены, что бы потом перегрузив домен обновить сборку.
    Попытка 1. (код фрагментирован)
    Создал домен, связал с именем файла
    Код (Text):
    1. public static Dictionary<string, AppDomain> DomManager = new Dictionary<string, AppDomain>();
    2. public static Dictionary<string, Assembly> assembManager = new Dictionary<string, Assembly>();
    3.  
    4. DomSetup.ShadowCopyFiles = "true";
    5. DomManager.Add(nameFile, AppDomain.CreateDomain(nameFile, null, DomSetup));
    6. DomManager[nameFile].DoCallBack(new CrossAppDomainDelegate(hApp.CrossDomain));
    7.  
    8. // вот сдесь грузится сборка из текушей директории что очень бесит
    9. // собственно выпендреж с обновлением сборки не проканывает.
    10. assembManager.Add(nameFile, (Assembly)DomManager[nameFile].GetData("Assembly"));
    11.  
    12. RemotingConfiguration.RegisterWellKnownServiceType(assembManager[nameFile].GetTypes()[0],
    13.                                                                        nameFile,
    14.                                                                        WellKnownObjectMode.Singleton);
    15.  
    16. public void CrossDomain() // Загружаем сборки в домены
    17. {
    18.       string asm = "Assembly";
    19.  
    20.       Assembly asmbly = Assembly.Load(File.ReadAllBytes(filePath)); // гружу ссборку из спец папки :)
    21.       AppDomain.CurrentDomain.SetData(asm, asmbly);
    22. }
    Попытка 2. Покороче. Тоже лажевая.
    Идея в том чтобы хранить сборки в Dictionary, публиковать их, а в случае необходимости просто переписывать
    Необходимо чтобы сборка лежала рядом с exe. ему мало Assembly.Load(File.ReadAllBytes(files))!?
    Код (Text):
    1. assembManager.Add(nameFile, Assembly.Load(File.ReadAllBytes(files)));
    2. RemotingConfiguration.RegisterWellKnownServiceType(assembManager[nameFile].GetTypes()[0],
    3.                                                                        nameFile,
    4.                                                                        WellKnownObjectMode.Singleton);
    Вообщем если не лень обыясните пожалуйста как делаются такие вещи. Чтобы я мог публиковать сборки загруженные в отдельные домены.