public static void Write(Models.Solution solution, System.IO.TextWriter writer) { if (!writer.Encoding.Equals(System.Text.Encoding.UTF8)) { throw new System.Exception("Solution writer requires UTF8 encoding."); } System.Text.UTF8Encoding encoding = (System.Text.UTF8Encoding)writer.Encoding; byte[] bom = encoding.GetPreamble(); if (bom.Length != 3 || bom[0] != 239 || bom[1] != 187 || bom[2] != 191) { throw new System.Exception("Solution writer requires UTF8 encoding with a Byte Order Mark."); } writer.WriteLine(""); writer.WriteLine("Microsoft Visual Studio Solution File, Format Version 9.00"); writer.WriteLine("# Visual Studio 2005"); foreach (Models.Project project in solution.Projects) { writer.WriteLine("Project(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"" + project.Name + "\", \"" + project.Path + "\", \"{" + project.Guid.ToString().ToUpper() + "}\""); writer.WriteLine("EndProject"); } writer.WriteLine("Global"); writer.WriteLine(" GlobalSection(SolutionConfigurationPlatforms) = preSolution"); writer.WriteLine(" Debug|Any CPU = Debug|Any CPU"); writer.WriteLine(" Release|Any CPU = Release|Any CPU"); writer.WriteLine(" EndGlobalSection"); writer.WriteLine(" GlobalSection(ProjectConfigurationPlatforms) = postSolution"); foreach (Models.Project project in solution.Projects) { writer.WriteLine(" {"+ project.Guid.ToString().ToUpper() + "}.Debug|Any CPU.ActiveCfg = Debug|Any CPU"); writer.WriteLine(" {"+ project.Guid.ToString().ToUpper() + "}.Debug|Any CPU.Build.0 = Debug|Any CPU"); writer.WriteLine(" {"+ project.Guid.ToString().ToUpper() + "}.Release|Any CPU.ActiveCfg = Release|Any CPU"); writer.WriteLine(" {"+ project.Guid.ToString().ToUpper() + "}.Release|Any CPU.Build.0 = Release|Any CPU"); } writer.WriteLine(" EndGlobalSection"); writer.WriteLine(" GlobalSection(SolutionProperties) = preSolution"); writer.WriteLine(" HideSolutionNode = FALSE"); writer.WriteLine(" EndGlobalSection"); writer.WriteLine("EndGlobal"); writer.Flush(); }
public static void Write(Models.Solution solution, System.IO.TextWriter writer) { if (!writer.Encoding.Equals(System.Text.Encoding.UTF8)) { throw new System.Exception("Solution writer requires UTF8 encoding."); } System.Text.UTF8Encoding encoding = (System.Text.UTF8Encoding)writer.Encoding; byte[] bom = encoding.GetPreamble(); if (bom.Length != 3 || bom[0] != 239 || bom[1] != 187 || bom[2] != 191) { throw new System.Exception("Solution writer requires UTF8 encoding with a Byte Order Mark."); } if (!HasVC(solution)) { writer.WriteLine(""); } writer.WriteLine("Microsoft Visual Studio Solution File, Format Version 10.00"); writer.WriteLine("# Visual Studio 2008"); foreach (Models.Project project in solution.Projects) { if (project.Path.EndsWith(".vcproj")) { writer.WriteLine("Project(\"{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}\") = \"" + project.Name + "\", \"" + project.Path + "\", \"{" + project.Guid.ToString().ToUpper() + "}\""); if (project.Dependencies.Count > 0) { writer.WriteLine(" ProjectSection(ProjectDependencies) = postProject"); foreach (System.Guid dependency in project.Dependencies) { writer.WriteLine(" {"+ dependency.ToString().ToUpper() + "} = {" + dependency.ToString().ToUpper() + "}"); } writer.WriteLine(" EndProjectSection"); } writer.WriteLine("EndProject"); } else if (project.Path.EndsWith(".csproj")) { writer.WriteLine("Project(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"" + project.Name + "\", \"" + project.Path + "\", \"{" + project.Guid.ToString().ToUpper() + "}\""); writer.WriteLine("EndProject"); } else if (project.Path.EndsWith(".vbproj")) { writer.WriteLine("Project(\"{F184B08F-C81C-45F6-A57F-5ABD9991F28F}\") = \"" + project.Name + "\", \"" + project.Path + "\", \"{" + project.Guid.ToString().ToUpper() + "}\""); if (project.Dependencies.Count > 0) { writer.WriteLine(" ProjectSection(ProjectDependencies) = postProject"); foreach (System.Guid dependency in project.Dependencies) { writer.WriteLine(" {"+ dependency.ToString().ToUpper() + "} = {" + dependency.ToString().ToUpper() + "}"); } writer.WriteLine(" EndProjectSection"); } writer.WriteLine("EndProject"); } else { throw new System.Exception("Invalid project: " + project.Path); } } writer.WriteLine("Global"); writer.WriteLine(" GlobalSection(SolutionConfigurationPlatforms) = preSolution"); foreach (Models.Config config in solution.Configs) { writer.WriteLine(" "+ config.Name + " = " + config.Name + ""); } writer.WriteLine(" EndGlobalSection"); writer.WriteLine(" GlobalSection(ProjectConfigurationPlatforms) = postSolution"); foreach (Models.Project project in solution.Projects) { foreach (Models.Config config in solution.Configs) { writer.WriteLine(" {"+ project.Guid.ToString().ToUpper() + "}." + config.Name + ".ActiveCfg = " + config.Name + ""); writer.WriteLine(" {"+ project.Guid.ToString().ToUpper() + "}." + config.Name + ".Build.0 = " + config.Name + ""); } } writer.WriteLine(" EndGlobalSection"); writer.WriteLine(" GlobalSection(SolutionProperties) = preSolution"); writer.WriteLine(" HideSolutionNode = FALSE"); writer.WriteLine(" EndGlobalSection"); writer.WriteLine("EndGlobal"); writer.Flush(); }