public static T RunOnUiThread <T>(Func <T> func)
        {
            // We must manually transfer the CallStackDepthCounter value across the thread boundary, because
            // CallContext logical data isn't preserved when using Microsoft.VisualStudio.Shell.ThreadHelper
            var callStackData = CallStackDepthCounter.Data;

            return(ThreadHelper.Generic.Invoke(() => {
                CallStackDepthCounter.Data = callStackData;
                ConsoleInitializer.EnsureRunspaceOnCurrentThread(); // In NuGet 1.2 and later, the UI thread doesn't necessarily have a PowerShell Runspace until we call this
                return func();
            }));
        }
 void CreateConsoleInitializer()
 {
     fakeConsoleHost = new FakePackageManagementConsoleHost();
     initializer     = new ConsoleInitializer(fakeConsoleHost);
 }