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");
                    }
                }
            }
        }
Ejemplo n.º 2
0
        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");
                    }
                }
            }
        }