Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 3
0
        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;
        }
Ejemplo n.º 4
0
        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;
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
 static void Realize(IVsPackageInstallerEvents installerEvents)
 {
     installerEvents.PackageInstalled        += metadata => { };
     installerEvents.PackageInstalling       += metadata => { };
     installerEvents.PackageReferenceAdded   += metadata => { };
     installerEvents.PackageReferenceRemoved += metadata => { };
     installerEvents.PackageUninstalled      += metadata => { };
     installerEvents.PackageUninstalling     += metadata => { };
 }
Ejemplo n.º 7
0
 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;
 }
Ejemplo n.º 8
0
        /// <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);
                }));
            }
        }
Ejemplo n.º 10
0
        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");
            }
        }
Ejemplo n.º 11
0
        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;
            }
        }
Ejemplo n.º 12
0
        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;
            }
        }
Ejemplo n.º 13
0
        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)
 {
 }
Ejemplo n.º 15
0
 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)
 {
 }
Ejemplo n.º 16
0
        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);
            }
        }
Ejemplo n.º 17
0
            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;
            }
Ejemplo n.º 18
0
 private void SubscribeNugetEvent()
 {
     if (_packageEvents == null)
     {
         _packageEvents = componentModel.GetService<IVsPackageInstallerEvents>();
         _packageEvents.PackageReferenceAdded += packageEvents_PackageReferenceAdded;
     }
 }
Ejemplo n.º 19
0
 static void Realize(IVsPackageInstallerEvents installerEvents)
 {
     installerEvents.PackageInstalled += metadata => { };
     installerEvents.PackageInstalling += metadata => { };
     installerEvents.PackageReferenceAdded += metadata => { };
     installerEvents.PackageReferenceRemoved += metadata => { };
     installerEvents.PackageUninstalled += metadata => { };
     installerEvents.PackageUninstalling += metadata => { };
 }
Ejemplo n.º 20
0
        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;
            }
        }