Exemple #1
0
        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();
        }
Exemple #2
0
        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();
        }