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 } } }
/// <summary> /// Evaluates the specified visualized expression using our custom evaluator. /// </summary> public void EvaluateVisualizedExpression(DkmVisualizedExpression visualizedExpression, out DkmEvaluationResult resultObject) { VSContext.InitializeInteractiveExecution(); VSCustomVisualizerEvaluator evaluator = new VSCustomVisualizerEvaluator(visualizedExpression); resultObject = evaluator.EvaluationResult; visualizedExpression.SetDataItem(DkmDataCreationDisposition.CreateAlways, evaluator); }
/// <summary> /// Initializes the <see cref="VSCustomVisualizerEvaluator"/> class. /// </summary> static VSCustomVisualizerEvaluator() { VSContext.InitializeIfNeeded(); }