예제 #1
0
        private void LoadDomain()
        {
            if (scriptDomain == null && VSContext.CurrentDebugMode == EnvDTE.dbgDebugMode.dbgBreakMode)
            {
                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 interactiveControl = FrameworkElementAdapters.ContractToViewAdapter(proxy.CreateControl(VSContext.InteractiveExecutionInitialization));
#else
                    interactiveControl = new VSInteractiveWindowControl(VSContext.InteractiveExecutionInitialization);
#endif

                    grid.Children.Clear();
                    grid.Children.Add(interactiveControl);
                }
#if DEBUG
                catch (Exception ex)
#else
                catch
#endif
                {
#if DEBUG
                    System.Windows.MessageBox.Show("Loading domain failed:\n" + ex.ToString());
#endif
                }
            }
        }
예제 #2
0
 public INativeHandleContract CreateControl(InteractiveExecutionInitialization interactiveExecutionInitialization)
 {
     control = new VSInteractiveWindowControl(interactiveExecutionInitialization);
     return(FrameworkElementAdapters.ViewToContractAdapter(control));
 }