private async Task <Tuple <IVsProjectAdapter, string> > CreateProjectAdapterAsync(string projectUniqueName) { await NuGetUIThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(); var dte = _serviceprovider.GetDTE(); var supportedProjects = dte.Solution.Projects.Cast <EnvDTE.Project>(); foreach (var solutionProject in supportedProjects) { var solutionProjectPath = EnvDTEProjectInfoUtility.GetFullProjectPath(solutionProject); if (!string.IsNullOrEmpty(solutionProjectPath) && PathUtility.GetStringComparerBasedOnOS().Equals(solutionProjectPath, projectUniqueName)) { // get the VSProjectAdapter instance which will be used to retrieve MSBuild properties var projectApadter = await _vsProjectAdapterProvider.Value.CreateAdapterForFullyLoadedProjectAsync(solutionProject); // read ProjectAssetsFile property to get assets file full path var projectAssetsFile = await projectApadter.BuildProperties.GetPropertyValueAsync(ProjectAssetsFile); return(Tuple.Create(projectApadter, projectAssetsFile)); } } return(null); }
private static async Task <Dictionary <string, EnvDTE.Project> > GetPathToDTEProjectLookupAsync(EnvDTE.DTE dte) { await NuGetUIThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(); var pathToProject = new Dictionary <string, EnvDTE.Project>(StringComparer.OrdinalIgnoreCase); var supportedProjects = dte.Solution.Projects.Cast <EnvDTE.Project>(); foreach (var solutionProject in supportedProjects) { var solutionProjectPath = EnvDTEProjectInfoUtility.GetFullProjectPath(solutionProject); if (!string.IsNullOrEmpty(solutionProjectPath) && !pathToProject.ContainsKey(solutionProjectPath)) { pathToProject.Add(solutionProjectPath, solutionProject); } } return(pathToProject); }
private async Task <NuGetProject> CreateNuGetProjectAsync(string projectUniqueName) { await NuGetUIThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(); var dte = await _asyncServiceprovider.GetDTEAsync(); IEnumerable <Project> supportedProjects = await GetProjectsInSolutionAsync(dte); foreach (Project solutionProject in supportedProjects) { var solutionProjectPath = EnvDTEProjectInfoUtility.GetFullProjectPath(solutionProject); if (!string.IsNullOrEmpty(solutionProjectPath) && PathUtility.GetStringComparerBasedOnOS().Equals(solutionProjectPath, projectUniqueName)) { return(await _solutionManager.Value.GetOrCreateProjectAsync(solutionProject, _projectContext.Value)); } } return(null); }