예제 #1
0
        static void Run(bool overwriteOnSave, string filePath)
        {
            if (!File.Exists(filePath))
            {
                throw new Exception($"Provided file {filePath} does not exist");
            }

            var        fileInfo  = new FileInfo(filePath);
            IConverter converter = null;

            if (fileInfo.Extension.Equals(".sln", StringComparison.OrdinalIgnoreCase))
            {
                converter = new Vs2015ToVs2017SolutionConverter(fileInfo);
            }
            else if (fileInfo.Extension.Equals(".csproj", StringComparison.OrdinalIgnoreCase))
            {
                converter = new Vs2015ToVs2017ProjectConverter(fileInfo);
            }

            converter.ConvertAndSave(overwriteOnSave);
        }
        public void ConvertAndSave(bool overwrite = false)
        {
            var solutionFile = File.ReadAllLines(_filePath);
            var projectLines = solutionFile.Where(s => s.StartsWith("Project")).ToList();

            var projects = new List <string>();

            foreach (var projectLine in projectLines)
            {
                var line    = projectLine.Replace(" ", string.Empty);
                var split   = line.IndexOf('=');
                var argStr  = line.Substring(split, line.Length - 1 - split);
                var args    = argStr.Split(',');
                var project = args[1];
                if (!project.ToLower().Contains(".csproj"))
                {
                    continue;
                }

                project = project.Substring(1, project.Length - 1 - 1);
                projects.Add($"{_solutionLocation}\\{project}");
            }

            foreach (var project in projects)
            {
                try
                {
                    var fileInfo         = new FileInfo(project);
                    var projectConverter = new Vs2015ToVs2017ProjectConverter(fileInfo);
                    projectConverter.ConvertAndSave(overwrite);
                }
                catch (Exception ex)
                {
                    Console.Error.WriteLine($"Encountered error processing {project} in {_projectName}: {ex.Message}");
                }
            }
        }