private string processProjectLine(string line)
{
Debug.Assert(line.StartsWith("Project("));
string[] projParts = line.Split(',');
if (projParts.Length != 3)
return line;
string pathToProject = projParts[1].Trim(' ', '"');
if (String.Compare(pathToProject, "Solution Items", true, CultureInfo.InvariantCulture) == 0)
return line;
string projectFile = Path.Combine(Path.GetDirectoryName(m_options.PathToSolution), pathToProject);
string projectExtension = Path.GetExtension(projectFile);
if (projectExtension != ".vbproj" && projectExtension != ".csproj") // Currently support only these cases specially. Original code has support of vcproj and vcxproj files.
return line;
string resultProjectDirectory = Path.Combine(m_options.ResultDirectory, Path.GetDirectoryName(pathToProject));
if (!Directory.Exists(resultProjectDirectory))
Directory.CreateDirectory(resultProjectDirectory);
string resultProjectFileName = processProjectName(projectFile);
string resultProjectPath = Path.Combine(resultProjectDirectory, resultProjectFileName);
File.Copy(projectFile, resultProjectPath, true);
convertProject(resultProjectPath);
string projectName = Path.GetFileName(projectFile);
return String.Format(
"{0},{1},{2}",
projParts[0].Replace(Path.GetFileNameWithoutExtension(projectFile), Path.GetFileNameWithoutExtension(resultProjectFileName)),
projParts[1].Replace(projectName, resultProjectFileName),
projParts[2]
);
}