public ConanProject ExtractConanProject(VCProject vcProject, ISettingsService settingsService) { var projectPath = ConanPathHelper.GetNearestConanfilePath(vcProject.ProjectDirectory); // TODO: Instead of nearest, use the one added to the project (be explicit) if (projectPath == null) { return(null); } string projectConanConfig = ConanPathHelper.GetNearestConanConfig(vcProject.ProjectDirectory); var project = new ConanProject { Path = projectPath, ConfigFile = projectConanConfig }; if (settingsService != null && settingsService.GetConanInstallOnlyActiveConfiguration()) { project.Configurations.Add(ExtractConanConfiguration(settingsService, vcProject.ActiveConfiguration)); } else { foreach (VCConfiguration configuration in vcProject.Configurations) { project.Configurations.Add(ExtractConanConfiguration(settingsService, configuration)); } } return(project); }
private async System.Threading.Tasks.Task InspectAsync(EnvDTE.Project project) { await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(); string projectConanConfig = ConanPathHelper.GetNearestConanConfig(project.FileName); var conanProject = new ConanProject { Path = project.FileName, ConfigFile = projectConanConfig }; await TaskScheduler.Default; var conanRunner = new ConanRunner(_settingsService.LoadSettingFile(conanProject), _conanPath); var process = await conanRunner.Inspect(conanProject); Logger.Log( $"[Conan.VisualStudio] Calling process '{process.StartInfo.FileName}' " + $"with arguments '{process.StartInfo.Arguments}'"); using (var reader = process.StandardOutput) { string line; while ((line = await reader.ReadLineAsync()) != null) { Logger.Log(line); } } }