Ejemplo n.º 1
0
        public void CreateUserAppDomain()
        {
            Profiler.Start("PluginLoader.ReloadAppDomain");

            if (Assemblies != null)
            {
                DestroyUserAppDomain();
            }

            LoadUserAssemblies();
            UserDomainReloaded?.Invoke();
            // AsyncOperationOnUI?.Post(() => UserDomainReloaded?.Invoke());

            Profiler.Stop("PluginLoader.ReloadAppDomain");
        }
Ejemplo n.º 2
0
        public void CreateUserAppDomain()
        {
            DestroyUserAppDomain();

            var AppDomainSetup = new AppDomainSetup();

            AppDomainSetup.ApplicationName = DateTime.Now.ToString("hh:MM:ss:ffff");
            AppDomainSetup.ApplicationBase = AppDomain.CurrentDomain.BaseDirectory;
            AppDomainSetup.PrivateBinPath  = AppDomain.CurrentDomain.BaseDirectory;

            m_PluginDomain = AppDomain.CreateDomain(DomainName, AppDomain.CurrentDomain.Evidence, AppDomainSetup);

            PluginDomainManager = (PluginDomainManager)m_PluginDomain.CreateInstanceAndUnwrap(
                typeof(PluginDomainManager).Assembly.FullName, "RobotRuntime.Plugins.PluginDomainManager");

            var assemblyNames = AppDomain.CurrentDomain.GetAllAssembliesInBaseDirectory().ToArray();

            PluginDomainManager.LoadAssemblies(assemblyNames);

            LoadUserAssemblies(); // User assemblies must be loaded before UserDomainReloaded event fires

            UserDomainReloaded?.Invoke();
            // AsyncOperationOnUI?.Post(() => UserDomainReloaded?.Invoke());
        }