private static void SwitchToProjects(ReferenceSwitcherConfiguration configuration, IConsoleHost host) { var solution = SolutionFile.Parse(configuration.ActualSolution); var globalProperties = ProjectExtensions.GetGlobalProperties(Path.GetFullPath(configuration.ActualSolution)); foreach (var solutionProject in solution.ProjectsInOrder) { if (solutionProject.ProjectType != SolutionProjectType.SolutionFolder && solutionProject.ProjectType != SolutionProjectType.Unknown) { try { using (var projectInformation = ProjectExtensions.LoadProject(solutionProject.AbsolutePath, globalProperties)) { foreach (var mapping in configuration.Mappings) { var packageName = mapping.Key; var projectPaths = mapping.Value.Select(p => configuration.GetActualPath(p)).ToList(); var switchedProjects = SwitchToProject(configuration, solutionProject, projectInformation, packageName, projectPaths, host); foreach (var s in switchedProjects) { host.WriteMessage("Project " + Path.GetFileName(s.Key) + " packages:\n"); host.WriteMessage(" " + packageName + " v" + s.Value + "\n replaced by:\n"); projectPaths.ForEach(p => host.WriteMessage(" " + Path.GetFileName(p) + "\n")); } } } } catch (Exception e) { host.WriteError($"The project '{solutionProject.AbsolutePath}' could not be loaded: {e}\n"); } } } }
private static void SwitchToPackages(IConsoleHost host, ReferenceSwitcherConfiguration configuration) { var solution = SolutionFile.Parse(configuration.ActualSolution); var globalProperties = ProjectExtensions.GetGlobalProperties(Path.GetFullPath(configuration.ActualSolution)); var mappedProjectFilePaths = configuration.Mappings.Values .SelectMany(x => x) .Select(p => Path.GetFileName(p)) .ToList(); foreach (var solutionProject in solution.ProjectsInOrder) { if (solutionProject.ProjectType != SolutionProjectType.SolutionFolder && ProjectExtensions.IsSupportedProject(solutionProject.AbsolutePath)) { try { using (var projectInformation = ProjectExtensions.LoadProject(solutionProject.AbsolutePath, globalProperties)) { foreach (var mapping in configuration.Mappings) { var projectPaths = mapping.Value.Select(p => configuration.GetActualPath(p)).ToList(); var packageName = mapping.Key; var switchedProjects = SwitchToPackage( configuration, solutionProject, projectInformation, projectPaths, packageName, mappedProjectFilePaths, host); if (switchedProjects.Count > 0) { host.WriteMessage("Project " + solutionProject.ProjectName + " with project references:\n"); projectPaths.ForEach(p => host.WriteMessage(" " + Path.GetFileName(p) + "\n")); host.WriteMessage(" replaced by package: " + packageName + " v" + switchedProjects.First().PackageVersion + "\n"); } } } } catch (Exception e) { host.WriteError($"The project '{solutionProject.AbsolutePath}' could not be loaded: {e}\n"); } } } }