public void Execute()
{
using (var writer = new StreamWriter(_solutionFileName, false, Encoding.UTF8)) {
WriteHeader(writer);
var projects = _solution.SolutionItems.Flatten<SolutionItem, SolutionProject, SolutionFolder>(p => p.Items).ToList();
foreach (var project in projects) {
writer.WriteLine("Project(\"{0}\") = \"{1}\", \"{2}\", \"{3}\"", "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}",
project.Name, FileSystem.GetRelativePath(_solutionFileName, project.Filepath),
project.Guid.ToString("B").ToUpperInvariant());
writer.WriteLine("EndProject");
}
var folders = _solution.SolutionItems.Flatten<SolutionItem, SolutionFolder, SolutionFolder>(p => p.Items).Where(f => f.Items.Any());
foreach (var folder in folders) {
writer.WriteLine("Project(\"{0}\") = \"{1}\", \"{2}\", \"{3}\"", "{2150E333-8FDC-42A3-9474-1A3956D46DE8}",
folder.Name, folder.Name, folder.Guid.ToString("B").ToUpperInvariant());
writer.WriteLine("EndProject");
}
writer.WriteLine("Global");
WriteTfsInformation(writer, projects);
WriteSolutionConfigurationPlatforms(writer, projects);
WriteProjectConfigurationPlatforms(writer, projects);
WriteSolutionProperties(writer);
WriteNestedProjects(writer);
writer.WriteLine("EndGlobal");
_solution.IsDirty = false;
}
}