private void LoadDomain() { if (scriptDomain == null) { try { AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve; AppDomainSetup setup = new AppDomainSetup() { ApplicationBase = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), PrivateBinPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), }; scriptDomain = AppDomain.CreateDomain(DomainName, AppDomain.CurrentDomain.Evidence, setup); VSContext.InitializeAppDomain(scriptDomain); #if USE_APP_DOMAIN proxy = (VSInteractiveWindowProxy)scriptDomain.CreateInstanceAndUnwrap(typeof(VSInteractiveWindowProxy).Assembly.FullName, typeof(VSInteractiveWindowProxy).FullName); var control = FrameworkElementAdapters.ContractToViewAdapter(proxy.CreateControl()); #else var control = new VSInteractiveWindowControl(); #endif grid.Children.Clear(); grid.Children.Add(control); } catch (Exception ex) { #if DEBUG System.Windows.MessageBox.Show("Loading domain failed:\n" + ex.ToString()); #endif } } }
private void LoadDomain() { if (scriptDomain == null) { try { AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve; AppDomainSetup setup = new AppDomainSetup() { ApplicationBase = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), PrivateBinPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), }; scriptDomain = AppDomain.CreateDomain(DomainName, null, setup); VSContext.InitializeAppDomain(scriptDomain); proxy = (VSInteractiveWindowProxy)scriptDomain.CreateInstanceAndUnwrap(typeof(VSInteractiveWindowProxy).Assembly.FullName, typeof(VSInteractiveWindowProxy).FullName); var control = FrameworkElementAdapters.ContractToViewAdapter(proxy.CreateControl()); grid.Children.Clear(); grid.Children.Add(control); } catch (Exception ex) { #if DEBUG System.Windows.MessageBox.Show("Loading domain failed:\n" + ex.ToString()); #endif } } }