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); }