private async Task RegisterVsServicesAsync()
        {
            // Get DTE service async
            var dte = await GetServiceAsync(typeof(DTE)) as DTE2;

            VsServiceProvider.Register(typeof(DTE), dte);

            // Get VS Output Window service async
            var vsOutputWindow = await GetServiceAsync(typeof(SVsOutputWindow));

            VsServiceProvider.Register(typeof(SVsOutputWindow), vsOutputWindow);

            // Get the status bar service async
            var vsStatusBar = await GetServiceAsync(typeof(SVsStatusbar));

            VsServiceProvider.Register(typeof(SVsStatusbar), vsStatusBar);

            // Get Vs Running Document Table service async
            var vsRunningDocumentTable = await GetServiceAsync(typeof(SVsRunningDocumentTable));

            VsServiceProvider.Register(typeof(SVsRunningDocumentTable), vsRunningDocumentTable);

            // Get Vs File Change service async
            var vsFileChange = await GetServiceAsync(typeof(SVsFileChangeEx));

            VsServiceProvider.Register(typeof(SVsFileChangeEx), vsFileChange);

            // Get VS Solution service async
            var vsSolution = await GetServiceAsync(typeof(SVsSolution));

            VsServiceProvider.Register(typeof(SVsSolution), vsSolution);
        }
        public bool Init(string dteVersion)
        {
            //Throw away DBML files otherwise it takes too long to poen the solution
            var file = Path.Combine(Path.Combine(Directories.GetSampleSolution(), @"NestedProjects\Nested\Nested.dbml"));

            while (File.Exists(file))
            {
                File.Delete(file);
            }

            file = Path.Combine(Path.Combine(Directories.GetSampleSolution(), @"NestedProjects\Nested2\Nested2.dbml"));
            while (File.Exists(file))
            {
                File.Delete(file);
            }


            var dte = _dte = (DTE)Activator.CreateInstance(Type.GetTypeFromProgID(dteVersion, true), true);

            dte.MainWindow.Activate();
            dte.Solution.Open(
                new FileInfo(Path.Combine(Directories.GetSampleSolution(), @"NestedProjects\Nested\Nested.sln"))
                .FullName);
            VsServiceProvider.Register(new DteVsPackageProvider(dte));
            MessageFilter.Register();

            // Thread.Sleep(30*1000);

            while (true)
            {
                try
                {
                    return(dte.Solution.Projects.Count > 0);
                }
                catch (COMException ce)
                {
                    if (ce.HResult != 0x8001010A)
                    {
                        throw;
                    }
                }
            }
        }
 public SSDTDevPack_VSPackagePackage()
 {
     VsServiceProvider.Register(this);
 }