internal PackageRestoreManager( DTE dte, ISolutionManager solutionManager, IFileSystemProvider fileSystemProvider, IPackageRepositoryFactory packageRepositoryFactory, IPackageSourceProvider packageSourceProvider, IVsPackageManagerFactory packageManagerFactory, IVsPackageInstallerEvents packageInstallerEvents, IPackageRepository localCacheRepository, IVsThreadedWaitDialogFactory waitDialogFactory, ISettings settings) { Debug.Assert(solutionManager != null); _dte = dte; _fileSystemProvider = fileSystemProvider; _solutionManager = solutionManager; _packageRepositoryFactory = packageRepositoryFactory; _packageSourceProvider = packageSourceProvider; _waitDialogFactory = waitDialogFactory; _packageManagerFactory = packageManagerFactory; _localCacheRepository = localCacheRepository; _settings = settings; _solutionManager.ProjectAdded += OnProjectAdded; _solutionManager.SolutionOpened += OnSolutionOpenedOrClosed; _solutionManager.SolutionClosed += OnSolutionOpenedOrClosed; packageInstallerEvents.PackageReferenceAdded += OnPackageReferenceAdded; }
internal PackageRestoreManager( DTE dte, ISolutionManager solutionManager, IFileSystemProvider fileSystemProvider, IPackageRepositoryFactory packageRepositoryFactory, IVsPackageSourceProvider packageSourceProvider, IVsPackageManagerFactory packageManagerFactory, IVsPackageInstallerEvents packageInstallerEvents, IPackageRepository localCacheRepository, IVsThreadedWaitDialogFactory waitDialogFactory, ISettings settings) { Debug.Assert(solutionManager != null); _dte = dte; _fileSystemProvider = fileSystemProvider; _solutionManager = solutionManager; _packageRepositoryFactory = packageRepositoryFactory; _packageSourceProvider = packageSourceProvider; _waitDialogFactory = waitDialogFactory; _packageManagerFactory = packageManagerFactory; _localCacheRepository = localCacheRepository; _settings = settings; _solutionManager.ProjectAdded += OnProjectAdded; _solutionManager.SolutionOpened += OnSolutionOpenedOrClosed; _solutionManager.SolutionClosed += OnSolutionOpenedOrClosed; packageInstallerEvents.PackageReferenceAdded += OnPackageReferenceAdded; }
public void Initialize() { _uiTaskScheduler = TTasks.TaskScheduler.FromCurrentSynchronizationContext(); _taskProvider = new VulnerabilityTaskProvider(this._serviceProvider); _markerProvider = new PackageReferenceMarkerProvider(_taskProvider); _selectionEvents = new EventSinks.VsSelectionEvents(VSPackage.Instance.MonitorSelection); _selectionEvents.SolutionOpened += SelectionEvents_SolutionOpened; _packageInstallerEvents = ServiceLocator.GetInstance<IVsPackageInstallerEvents>(); if (_packageInstallerEvents == null) { throw new InvalidOperationException(string.Format(Resources.Culture, Resources.General_MissingService, typeof(IVsPackageInstallerEvents).FullName)); } _packageInstallerEvents.PackageReferenceAdded += InstallerEvents_PackageReferenceAdded; _packageInstallerEvents.PackageReferenceRemoved += InstallerEvents_PackageReferenceRemoved; _dte = ServiceLocator.GetInstance<DTE>(); if (_dte == null) { throw new InvalidOperationException(string.Format(Resources.Culture, Resources.General_MissingService, typeof(DTE).FullName)); } _documentEvents = _dte.Events.DocumentEvents; _documentEvents.DocumentOpened += OnDocumentOpened; _documentEvents.DocumentClosing += OnDocumentClosing; }
public void Initialize() { _uiTaskScheduler = TTasks.TaskScheduler.FromCurrentSynchronizationContext(); _taskProvider = new VulnerabilityTaskProvider(this._serviceProvider); _markerProvider = new PackageReferenceMarkerProvider(_taskProvider); _refreshTimer = new Timer(new TimerCallback(RefreshTimer), null, Timeout.Infinite, Timeout.Infinite); _selectionEvents = new EventSinks.VsSelectionEvents(VSPackage.Instance.MonitorSelection); _selectionEvents.SolutionOpened += SelectionEvents_SolutionOpened; _packageInstallerEvents = ServiceLocator.GetInstance <IVsPackageInstallerEvents>(); if (_packageInstallerEvents == null) { throw new InvalidOperationException(string.Format(Resources.Culture, Resources.General_MissingService, typeof(IVsPackageInstallerEvents).FullName)); } _packageInstallerEvents.PackageInstalled += InstallerEvents_PackageInstalled; _packageInstallerEvents.PackageUninstalled += InstallerEvents_PackageUninstalled; _packageInstallerEvents.PackageReferenceAdded += InstallerEvents_PackageReferenceAdded; _packageInstallerEvents.PackageReferenceRemoved += InstallerEvents_PackageReferenceRemoved; _dte = ServiceLocator.GetInstance <DTE>(); if (_dte == null) { throw new InvalidOperationException(string.Format(Resources.Culture, Resources.General_MissingService, typeof(DTE).FullName)); } _documentEvents = _dte.Events.DocumentEvents; _documentEvents.DocumentOpened += OnDocumentOpened; _documentEvents.DocumentClosing += OnDocumentClosing; }
private ILookup<string, FileSystemPath> installedPackages; // there can be several versions of one package (different versions) #endregion Fields #region Constructors public NuGetApi(ISolution solution, Lifetime lifetime, IComponentModel componentModel, IThreading threading, ProjectModelSynchronizer projectModelSynchronizer) { this.solution = solution; this.threading = threading; this.projectModelSynchronizer = projectModelSynchronizer; try { vsPackageInstallerServices = componentModel.GetExtensions<IVsPackageInstallerServices>().SingleOrDefault(); vsPackageInstaller = componentModel.GetExtensions<IVsPackageInstaller>().SingleOrDefault(); vsPackageInstallerEvents = componentModel.GetExtensions<IVsPackageInstallerEvents>().SingleOrDefault(); } catch (Exception e) { Logger.LogException("Unable to get NuGet interfaces.", e); } if (!IsNuGetAvailable) { Logger.LogMessage(LoggingLevel.VERBOSE, "[NUGET PLUGIN] Unable to get NuGet interfaces. No exception thrown"); return; } lifetime.AddBracket( () => vsPackageInstallerEvents.PackageInstalled += RecalcInstalledPackages, () => vsPackageInstallerEvents.PackageInstalled -= RecalcInstalledPackages); lifetime.AddBracket( () => vsPackageInstallerEvents.PackageUninstalled += RecalcInstalledPackages, () => vsPackageInstallerEvents.PackageUninstalled -= RecalcInstalledPackages); RecalcInstalledPackages(null); }
static void Realize(IVsPackageInstallerEvents installerEvents) { installerEvents.PackageInstalled += metadata => { }; installerEvents.PackageInstalling += metadata => { }; installerEvents.PackageReferenceAdded += metadata => { }; installerEvents.PackageReferenceRemoved += metadata => { }; installerEvents.PackageUninstalled += metadata => { }; installerEvents.PackageUninstalling += metadata => { }; }
public PackageHandler(EnvDTE.Project project, IVsPackageInstallerServices packageServices, IVsPackageInstaller installer, IVsPackageUninstaller uninstaller, IVsPackageInstallerEvents events) : this(project, packageServices, installer, uninstaller, events, null) { m_project = project; m_packageServices = packageServices; m_installer = installer; m_uninstaller = uninstaller; m_events = events; }
/// <summary> /// Note: since analyzer and code fix providers are created only once per VS instance, /// we need to make sure that no project specific info is used in the constructor, /// since when user reopens solution this constructor will not be called again and /// thus objects from old projects might be used later when code fix is being applied. /// So export all project specific objects in InstallPackage everytime. /// </summary> /// <param name="serviceProvider"></param> public PackageInstaller(SVsServiceProvider serviceProvider) { Debug.Assert(serviceProvider != null); _serviceProvider = serviceProvider; var container = _serviceProvider.GetService <IComponentModel, SComponentModel>(); IVsPackageInstallerEvents nugetInstallerEvents = container.DefaultExportProvider.GetExportedValue <IVsPackageInstallerEvents>(); nugetInstallerEvents.PackageInstalled += OnPackageInstalled; }
/// <summary> /// Initializes a new instance of the <see cref="ReferencedAnalyzersCache"/> class. /// </summary> /// <param name="lifetime">The lifetime of the component</param> /// <param name="solution">The current solution</param> /// <param name="threading">The threading API</param> /// <param name="solutionLoadTasksScheduler">Solution load task scheduler</param> /// <param name="projectModelSynchronizer">The project model synchronizer</param> /// <param name="packageInstallerServices">NuGet installer services API</param> /// <param name="packageInstallerEvents">NuGet installer events API</param> public ReferencedAnalyzersCache( Lifetime lifetime, ISolution solution, IThreading threading, ISolutionLoadTasksScheduler solutionLoadTasksScheduler, ProjectModelSynchronizer projectModelSynchronizer, Lazy <Optional <IVsPackageInstallerServices> > packageInstallerServices, Lazy <Optional <IVsPackageInstallerEvents> > packageInstallerEvents) { this.solution = solution; this.threading = threading; this.projectModelSynchronizer = projectModelSynchronizer; this.packageInstallerEvents = packageInstallerEvents.Value.CanBeNull; this.packageInstallerServices = packageInstallerServices.Value.CanBeNull; this.syncObject = new object(); this.referencedAnalyzers = new OneToSetMap <string, string>(); this.groupingEvent = threading.GroupingEvents.CreateEvent( lifetime, "StyleCop::AnalyzersCache", TimeSpan.FromSeconds(2), Rgc.Guarded, this.DoResetAnalyzersCache); if (!this.IsNuGetAvailable) { Logger.LogMessage( LoggingLevel.VERBOSE, "[StyleCop::AnalyzersCache] Unable to get NuGet interfaces. No exception thrown"); } else { lifetime.AddBracket( () => { this.packageInstallerEvents.PackageInstalled += this.ResetAnalyzersCache; this.packageInstallerEvents.PackageUninstalled += this.ResetAnalyzersCache; }, () => { this.packageInstallerEvents.PackageInstalled -= this.ResetAnalyzersCache; this.packageInstallerEvents.PackageUninstalled -= this.ResetAnalyzersCache; }); solutionLoadTasksScheduler.EnqueueTask(new SolutionLoadTask("StyleCop.ReferencedAnalyzersCache", SolutionLoadTaskKinds.AfterDone, () => { this.ResetAnalyzersCache(null); })); } }
private void ensureNuget() { if (_nuget == null) { var componentModel = (IComponentModel)GetService(typeof(SComponentModel)); _nuget = componentModel.GetService <IVsPackageInstallerServices>(); _nugetEvents = componentModel.GetService <IVsPackageInstallerEvents>(); } if (_nuget == null || _nugetEvents == null) { throw new InvalidOperationException("nuget"); } }
private bool disposedValue = false; // To detect redundant calls protected virtual void Dispose(bool disposing) { if (!disposedValue) { if (disposing) { _refreshTimer?.Dispose(); _markerProvider?.Dispose(); if (_packageInstallerEvents != null) { _packageInstallerEvents.PackageReferenceAdded -= InstallerEvents_PackageReferenceAdded; _packageInstallerEvents.PackageReferenceRemoved -= InstallerEvents_PackageReferenceRemoved; _packageInstallerEvents.PackageInstalled -= InstallerEvents_PackageInstalled; _packageInstallerEvents.PackageUninstalled -= InstallerEvents_PackageUninstalled; } if (_documentEvents != null) { _documentEvents.DocumentOpened -= OnDocumentOpened; _documentEvents.DocumentClosing -= OnDocumentClosing; } if (_selectionEvents != null) { _selectionEvents.SolutionOpened -= SelectionEvents_SolutionOpened; _selectionEvents.Dispose(); } _taskProvider?.Dispose(); _backgroundQueue?.Dispose(); _auditResults.Clear(); } // TODO: free unmanaged resources (unmanaged objects) and override a finalizer below. // TODO: set large fields to null. //_packageReferenceMarkerClients = null; _markerProvider = null; _packageInstallerEvents = null; _documentEvents = null; _selectionEvents = null; _dte = null; _taskProvider = null; _backgroundQueue = null; _auditResults = null; disposedValue = true; } }
public PackageHandler(EnvDTE.Project project, IVsPackageInstallerServices packageServices, IVsPackageInstaller installer, IVsPackageUninstaller uninstaller, IVsPackageInstallerEvents events, IVsOutputWindowPane outputWindowPane) { m_project = project ?? throw new ArgumentNullException(nameof(project)); m_packageServices = packageServices ?? throw new ArgumentNullException(nameof(packageServices)); m_installer = installer ?? throw new ArgumentNullException(nameof(installer)); m_uninstaller = uninstaller ?? throw new ArgumentNullException(nameof(uninstaller)); m_events = events; m_outputWindowPane = outputWindowPane; if (m_outputWindowPane != null && m_events != null) { m_events.PackageInstalling += OnEventsOnPackageInstalling; m_events.PackageInstalled += OnEventsOnPackageInstalled; m_events.PackageUninstalling += OnEventsOnPackageUninstalling; m_events.PackageUninstalled += OnEventsOnPackageUninstalled; } }
public void Dispose() { if (!_disposed) { try { var container = _serviceProvider.GetService <IComponentModel, SComponentModel>(); IVsPackageInstallerEvents nugetInstallerEvents = container.DefaultExportProvider.GetExportedValue <IVsPackageInstallerEvents>(); nugetInstallerEvents.PackageInstalled -= OnPackageInstalled; } catch (Exception e) { Debug.WriteLine(e.Message); // do nothing for now, log? } _disposed = true; } GC.SuppressFinalize(this); }
public PackageRestoreManager( ISolutionManager solutionManager, IFileSystemProvider fileSystemProvider, IPackageRepositoryFactory packageRepositoryFactory, IVsPackageManagerFactory packageManagerFactory, IVsPackageSourceProvider packageSourceProvider, IVsPackageInstallerEvents packageInstallerEvents, ISettings settings) : this(ServiceLocator.GetInstance<DTE>(), solutionManager, fileSystemProvider, packageRepositoryFactory, packageSourceProvider, packageManagerFactory, packageInstallerEvents, MachineCache.Default, ServiceLocator.GetGlobalService<SVsThreadedWaitDialogFactory, IVsThreadedWaitDialogFactory>(), settings) { }
public PackageRestoreManager( ISolutionManager solutionManager, IFileSystemProvider fileSystemProvider, IPackageRepositoryFactory packageRepositoryFactory, IVsPackageManagerFactory packageManagerFactory, IVsPackageSourceProvider packageSourceProvider, IVsPackageInstallerEvents packageInstallerEvents, ISettings settings) : this(ServiceLocator.GetInstance <DTE>(), solutionManager, fileSystemProvider, packageRepositoryFactory, packageSourceProvider, packageManagerFactory, packageInstallerEvents, MachineCache.Default, ServiceLocator.GetGlobalService <SVsThreadedWaitDialogFactory, IVsThreadedWaitDialogFactory>(), settings) { }
public ReferencesGraphProvider(IShellPackage package, IVsPackageInstallerServices packageInstaller, IVsPackageInstallerEvents installerEvents) { this.package = package; this.packageInstaller = packageInstaller; this.installerEvents = installerEvents; installerEvents.PackageReferenceAdded += e => System.Threading.Tasks.Task.Run((Action)RefreshNodes); installerEvents.PackageReferenceRemoved += e => System.Threading.Tasks.Task.Run((Action)RefreshNodes); this.icons = new GraphIcons(package); icons.Initialize(); var monitorSelection = package.GetService <IVsMonitorSelection>(); if (monitorSelection != null) { monitorSelection.AdviseSelectionEvents(this, out selectionCookie); } }
public ProjectCache(VisualStudioWorkspace workspace, ProjectId projectId, IVsPackageInstallerServices nuget, IVsPackageInstallerEvents nugetEvents) { var project = workspace.CurrentSolution.GetProject(projectId); _workspace = workspace; _path = Path.GetDirectoryName(project.FilePath); registerPackages(nuget.GetInstalledPackages()); nugetEvents.PackageInstalled += nugetEventsPackageInstalled; }
private void SubscribeNugetEvent() { if (_packageEvents == null) { _packageEvents = componentModel.GetService<IVsPackageInstallerEvents>(); _packageEvents.PackageReferenceAdded += packageEvents_PackageReferenceAdded; } }
private bool disposedValue = false; // To detect redundant calls protected virtual void Dispose(bool disposing) { if (!disposedValue) { if (disposing) { if (_markerProvider != null) { _markerProvider.Dispose(); } if (_packageInstallerEvents != null) { _packageInstallerEvents.PackageReferenceAdded -= InstallerEvents_PackageReferenceAdded; _packageInstallerEvents.PackageReferenceRemoved -= InstallerEvents_PackageReferenceRemoved; } if (_documentEvents != null) { _documentEvents.DocumentOpened -= OnDocumentOpened; _documentEvents.DocumentClosing -= OnDocumentClosing; } if (_selectionEvents != null) { _selectionEvents.SolutionOpened -= SelectionEvents_SolutionOpened; _selectionEvents.Dispose(); } if (_taskProvider != null) { _taskProvider.Dispose(); } if (_backgroundQueue != null) { _backgroundQueue.Dispose(); } _auditResults.Clear(); } // TODO: free unmanaged resources (unmanaged objects) and override a finalizer below. // TODO: set large fields to null. //_packageReferenceMarkerClients = null; _markerProvider = null; _packageInstallerEvents = null; _documentEvents = null; _selectionEvents = null; _dte = null; _taskProvider = null; _backgroundQueue = null; _auditResults = null; disposedValue = true; } }