static void Main() { //включаем визуальные стили для прилжения, поскольку оно является оконным Application.EnableVisualStyles(); /*создаём необходимые домены приложений с дружественными именами и * сохраняем ссылки на них в соответствующие переменные*/ Drawer = AppDomain.CreateDomain("Drawer"); TextWindow = AppDomain.CreateDomain("TextWindow"); /*загружаем сборки с оконными приложениями в соответствующие домены приложений*/ DrawerAsm = Drawer.Load(AssemblyName.GetAssemblyName("TextDrawer.exe")); TextWindowAsm = Drawer.Load(AssemblyName.GetAssemblyName("TextWindow.exe")); /*создаём объекты окон на сонове оконных типов данных из загруженных сборок*/ DrawerWindow = Activator.CreateInstance(DrawerAsm.GetType("TextDrawer.Form1")) as Form; TextWindowWnd = Activator.CreateInstance( TextWindowAsm.GetType("TextWindow.Form1"), new object[] { DrawerAsm.GetModule("TextDrawer.exe"), DrawerWindow }) as Form; /*запускаем потоки*/ (new Thread(new ThreadStart(RunVisualizer))).Start(); (new Thread(new ThreadStart(RunDrawer))).Start(); /*добавляем обработчик события DomainUnload*/ Drawer.DomainUnload += new EventHandler(Drawer_DomainUnload); }
public void ReadScripts(Assembly assembly, Dictionary<string, Lazy<IScript>> scripts) { Module module = assembly.GetModule(Compiler.ModuleName); if(module == null) return; Compiler.ReadScripts(module, scripts); }
/// <summary> /// Gets a CLR module where the script is stored. /// </summary> public static Module GetModule(Assembly/*!*/ assembly) { return assembly.GetModule(moduleName); }