public ProjectItems CreateVsFolder(IProject project, string[] folders) { VSProjectInfo projectInfo; projectInfo = ProjectModelSynchronizer.GetInstance(project.GetSolution()).GetProjectInfoByProject(project); if (projectInfo == null) { return(null); } folders = FilterDuplicationFolderNames(project.GetDefaultNamespaceProperty(), folders); Project envProject = projectInfo.GetExtProject(); ProjectItems projectItems = envProject.ProjectItems; ProjectItem projectItem = null; foreach (string folder in folders) { projectItem = GetOrCreateFolder(projectItems, folder); if (projectItem == null) { return(null); } envProject.Save(envProject.FullName); projectItems = projectItem.ProjectItems; } return(projectItems); //return project.FindProjectItemByLocation(new FileSystemPath(projectItem.get_FileNames(0))) as IProjectFolder; }
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); }
/// <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); })); } }
public PreviewTabEditorManager(Lifetime lifetime, ProjectModelSynchronizer projectModelSynchronizer, IVsUIShellOpenDocument vsUiShellOpenDocument, VsDocumentManagerSynchronization vsDocumentManagerSynchronization, ITextControlManager textControlManager, IFrameFocusHelper frameFocusHelper, DocumentManager documentManager, DocumentTransactionManager documentTransactionManager, IThreading threading) : base(lifetime, projectModelSynchronizer, vsUiShellOpenDocument, vsDocumentManagerSynchronization, textControlManager, frameFocusHelper, documentManager) { this.documentTransactionManager = documentTransactionManager; this.threading = threading; previewTabRequests = 0; }