protected override async System.Threading.Tasks.Task InitializeAsync(CancellationToken cancellationToken, IProgress <ServiceProgressData> progress) { await base.InitializeAsync(cancellationToken, progress); // NOTE: this switch is already performed within the base.InitializeAsync() method. await Microsoft.VisualStudio.Shell.ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken); _CurrentSolutionRcsType = RcsType.Unknown; //EnvDTE.IVsExtensibility extensibility = await GetServiceAsync(typeof(EnvDTE.IVsExtensibility)) as EnvDTE.IVsExtensibility; //_DTE2 = (DTE2)extensibility.GetGlobalsObject(null).DTE as EnvDTE80.DTE2; _DTE2 = Package.GetGlobalService(typeof(DTE)) as DTE2; IVsSolution solution = await GetServiceAsync(typeof(SVsSolution)) as IVsSolution; Assumes.Present(solution); int hr; uint pdwCookie; hr = solution.AdviseSolutionEvents(this, out pdwCookie); Marshal.ThrowExceptionForHR(hr); _VsShell = await GetServiceAsync(typeof(SVsShell)) as IVsShell; _VsRegisterScciProvider = await GetServiceAsync(typeof(IVsRegisterScciProvider)) as IVsRegisterScciProvider; _VsGetScciProviderInterface = await GetServiceAsync(typeof(IVsRegisterScciProvider)) as IVsGetScciProviderInterface; _SettingsStore = GetWritableSettingsStore(); TaskManager.Initialize(this); solutionEvents = ((Events2)_DTE2.Events).SolutionEvents; solutionEvents.Opened += new _dispSolutionEvents_OpenedEventHandler(this.SolutionEvents_Opened); SolutionEvents_Opened(); }
public static void RegisterPrimarySourceControlProvider(RcsType rcsType) { int hr; Guid packageGuid = new Guid(); Guid sccProviderGuid = new Guid(); SccProvider providerToLoad = SccProvider.Unknown; bool enabled = false; switch (rcsType) { case RcsType.Subversion: { enabled = RegisterSubversionScc(out packageGuid, out sccProviderGuid, out providerToLoad); break; } case RcsType.Git: { enabled = RegisterGitScc(out packageGuid, out sccProviderGuid, out providerToLoad); break; } case RcsType.Mercurial: { enabled = RegisterMercurialScc(out packageGuid, out sccProviderGuid, out providerToLoad); break; } case RcsType.Perforce: { enabled = RegisterPerforceScc(out packageGuid, out sccProviderGuid, out providerToLoad); break; } } if (!enabled) { return; } SccProvider currentSccProvider = GetCurrentSccProvider(); if (providerToLoad == currentSccProvider) { return; } int installed; hr = _VsShell.IsPackageInstalled(ref packageGuid, out installed); Marshal.ThrowExceptionForHR(hr); if (installed == 0) { return; } hr = _VsRegisterScciProvider.RegisterSourceControlProvider(sccProviderGuid); Marshal.ThrowExceptionForHR(hr); }
protected override void Initialize() { base.Initialize(); _CurrentSolutionRcsType = RcsType.Unknown; IVsExtensibility extensibility = GetService <IVsExtensibility>(); _DTE2 = (DTE2)extensibility.GetGlobalsObject(null).DTE; IVsSolution solution = GetService <SVsSolution>() as IVsSolution; int hr; uint pdwCookie; hr = solution.AdviseSolutionEvents(this, out pdwCookie); Marshal.ThrowExceptionForHR(hr); _VsShell = GetService <SVsShell>() as IVsShell; _VsRegisterScciProvider = GetService <IVsRegisterScciProvider>(); _SettingsStore = GetWritableSettingsStore(); }
public static void RegisterPrimarySourceControlProvider(RcsType rcsType) { ThreadHelper.ThrowIfNotOnUIThread(); AppHelper.Output(String.Format("Registering Primary Source Control Provider: {0}", rcsType.ToString())); int hr; Guid packageGuid = new Guid(); Guid sccProviderGuid = new Guid(); SccProvider providerToLoad = SccProvider.Unknown; bool enabled = false; switch (rcsType) { case RcsType.Subversion: { enabled = RegisterSubversionScc(out packageGuid, out sccProviderGuid, out providerToLoad); break; } case RcsType.Git: { enabled = RegisterGitScc(out packageGuid, out sccProviderGuid, out providerToLoad); break; } case RcsType.Mercurial: { enabled = RegisterMercurialScc(out packageGuid, out sccProviderGuid, out providerToLoad); break; } case RcsType.Perforce: { enabled = RegisterPerforceScc(out packageGuid, out sccProviderGuid, out providerToLoad); break; } } AppHelper.Output(String.Format("Provider to Load: {0}, Enabled: {1}", providerToLoad.ToString(), enabled)); if (!enabled) { return; } SccProvider currentSccProvider = GetCurrentSccProvider(); AppHelper.Output(String.Format("Current Provider: {0}", currentSccProvider.ToString())); if (providerToLoad == currentSccProvider) { return; } var installed = IsSccPackageInstalled(packageGuid); AppHelper.Output(String.Format("Provider {0} installed: {1}", providerToLoad.ToString(), installed)); if (!installed) { return; } hr = _VsRegisterScciProvider.RegisterSourceControlProvider(sccProviderGuid); Marshal.ThrowExceptionForHR(hr); AppHelper.Output(String.Format("Provider {0} registered (providerGuid: {1})", providerToLoad.ToString(), sccProviderGuid.ToString())); }