public static void WriteSolution( SolutionWriter writer, TextWriter textWriter, string sln, Hashtable parameters, Hashtable uriMap) { writer.SetOutput(textWriter); writer.SetParameters(parameters); Solution solution = new Solution(); solution.Read(sln, uriMap); writer.WriteStartSolution(solution); foreach (Project project in solution.GetProjects()) { IList sourceFiles = project.GetSourceFiles(); if (sourceFiles.Count > 0) { writer.WriteStartProjectSourceFiles(project); foreach (File file in sourceFiles) { writer.WriteProjectSourceFile(file); } writer.WriteEndProjectSourceFiles(); } IList resXFiles = project.GetResXResourceFiles(); if (resXFiles.Count > 0) { writer.WriteStartProjectResXResourceFiles(project); foreach (File file in resXFiles) { writer.WriteProjectResXResourceFile(file); } writer.WriteEndProjectResXResourceFiles(); } IList resourceFiles = project.GetNonResXResourceFiles(); if (resourceFiles.Count > 0) { writer.WriteStartProjectNonResXResourceFiles(project); foreach (File file in resourceFiles) { writer.WriteProjectNonResXResourceFile(file); } writer.WriteEndProjectNonResXResourceFiles(); } } foreach (Project project in solution.GetProjects()) { if (project.CountFiles("Compile") > 0) { writer.WriteStartProject(project); writer.WriteStartProjectDependencies(); foreach (Project dependency in solution.GetDependencies(project)) { writer.WriteProjectDependency(dependency); } foreach (Reference reference in project.GetReferences()) { if (reference.Type == "Project") { writer.WriteProjectDependency(solution.GetProject(reference.Value)); } } foreach (File file in project.GetFiles()) { if (!file.RelativePath.EndsWith(".licx")) { writer.WriteProjectDependency(file); } } writer.WriteEndProjectDependencies(); IList resXFiles = project.GetResXResourceFiles(); if (resXFiles.Count > 0) { writer.WriteStartResXFiles(); foreach (File file in resXFiles) { writer.WriteResXFile(file); } writer.WriteEndResXFiles(); } writer.WriteStartAssembly(); IList sourceFiles = project.GetSourceFiles(); if (sourceFiles.Count > 0) { writer.WriteStartSourceFiles(); foreach (File file in sourceFiles) { writer.WriteSourceFile(file); } writer.WriteEndSourceFiles(); } writer.WriteStartReferences(); // Write out the standard system references. foreach (Reference reference in project.GetSystemReferences()) { if (reference != null) { // assume it's another project in sln and/or copy-local string path = reference.Value + ".dll"; bool inBuildPath = true; if (!reference.CopyLocal && (reference.Type == "AssemblyName")) { inBuildPath = false; if (reference.SourcePath != string.Empty) { path = reference.SourcePath; } if (!Path.IsPathRooted(path)) { path = Path.GetFullPath(solution.SolutionDirectory + "\\" + project.RelativePath + "\\" + path); } } writer.WriteReference(path, inBuildPath); } } // Write out the project references. foreach (Project referencedProject in project.GetReferencedProjects()) { writer.WriteReference(referencedProject); } writer.WriteEndReferences(); writer.WriteStartResources(); foreach (File file in project.GetResXResourceFiles()) { string path = project.RootNamespace + "." + Path.GetFileNameWithoutExtension(file.RelativePath) + ".resources"; writer.WriteResource(path, null, true); } foreach (File file in project.GetNonResXResourceFiles()) { writer.WriteResource( file.RelativePathFromSolutionDirectory, file.ResourceName, false); } writer.WriteEndResources(); writer.WriteEndAssembly(); // Write out the project references so that they can be copied. writer.WriteStartCopyProjectAssemblies(); foreach (Project referencedProject in project.GetReferencedProjects()) { writer.WriteCopyProjectAssembly(referencedProject); } writer.WriteEndCopyProjectAssemblies(); writer.WriteEndProject(); } } writer.WriteStartCleanTarget(); foreach (Project project in solution.GetProjects()) { writer.WriteCleanProject(project); } writer.WriteEndCleanTarget(); writer.WriteEndSolution(); }
public static void WriteSolution( SolutionWriter writer, TextWriter textWriter, string sln, Hashtable parameters, Hashtable uriMap) { writer.SetOutput(textWriter); writer.SetParameters(parameters); Solution solution = new Solution(); solution.Read(sln, uriMap); writer.WriteStartSolution(solution); foreach (Project project in solution.GetProjects()) { IList sourceFiles = project.GetSourceFiles(); if (sourceFiles.Count > 0) { writer.WriteStartProjectSourceFiles(project); foreach (File file in sourceFiles) { writer.WriteProjectSourceFile(file); } writer.WriteEndProjectSourceFiles(); } IList resXFiles = project.GetResXResourceFiles(); if (resXFiles.Count > 0) { writer.WriteStartProjectResXResourceFiles(project); foreach (File file in resXFiles) { writer.WriteProjectResXResourceFile(file); } writer.WriteEndProjectResXResourceFiles(); } IList resourceFiles = project.GetNonResXResourceFiles(); if (resourceFiles.Count > 0) { writer.WriteStartProjectNonResXResourceFiles(project); foreach (File file in resourceFiles) { writer.WriteProjectNonResXResourceFile(file); } writer.WriteEndProjectNonResXResourceFiles(); } } foreach (Project project in solution.GetProjects()) { if (project.CountFiles("Compile") > 0) { writer.WriteStartProject(project); writer.WriteStartProjectDependencies(); foreach (Project dependency in solution.GetDependencies(project)) { writer.WriteProjectDependency(dependency); } foreach (Reference reference in project.GetReferences()) { if (reference.Type == "Project") { writer.WriteProjectDependency(solution.GetProject(reference.Value)); } } foreach (File file in project.GetFiles()) { if (!file.RelativePath.EndsWith(".licx")) { writer.WriteProjectDependency(file); } } writer.WriteEndProjectDependencies(); IList resXFiles = project.GetResXResourceFiles(); if (resXFiles.Count > 0) { writer.WriteStartResXFiles(); foreach (File file in resXFiles) { writer.WriteResXFile(file); } writer.WriteEndResXFiles(); } writer.WriteStartAssembly(); IList sourceFiles = project.GetSourceFiles(); if (sourceFiles.Count > 0) { writer.WriteStartSourceFiles(); foreach (File file in sourceFiles) { writer.WriteSourceFile(file); } writer.WriteEndSourceFiles(); } writer.WriteStartReferences(); // Write out the standard system references. foreach (Reference reference in project.GetSystemReferences()) { if (reference != null) { // assume it's another project in sln and/or copy-local string path = reference.Value + ".dll"; bool inBuildPath = true; if ( !reference.CopyLocal && (reference.Type == "AssemblyName") ) { inBuildPath = false; if ( reference.SourcePath != string.Empty ) { path = reference.SourcePath; } if ( ! Path.IsPathRooted( path ) ) { path = Path.GetFullPath( solution.SolutionDirectory + "\\" + project.RelativePath + "\\" + path ); } } writer.WriteReference( path , inBuildPath ); } } // Write out the project references. foreach (Project referencedProject in project.GetReferencedProjects()) { writer.WriteReference(referencedProject); } writer.WriteEndReferences(); writer.WriteStartResources(); foreach (File file in project.GetResXResourceFiles()) { string path = project.RootNamespace + "." + Path.GetFileNameWithoutExtension(file.RelativePath) + ".resources"; writer.WriteResource(path, null, true); } foreach (File file in project.GetNonResXResourceFiles()) { writer.WriteResource( file.RelativePathFromSolutionDirectory, file.ResourceName, false); } writer.WriteEndResources(); writer.WriteEndAssembly(); // Write out the project references so that they can be copied. writer.WriteStartCopyProjectAssemblies(); foreach (Project referencedProject in project.GetReferencedProjects()) { writer.WriteCopyProjectAssembly(referencedProject); } writer.WriteEndCopyProjectAssemblies(); writer.WriteEndProject(); } } writer.WriteStartCleanTarget(); foreach (Project project in solution.GetProjects()) { writer.WriteCleanProject(project); } writer.WriteEndCleanTarget(); writer.WriteEndSolution(); }
public void WriteStartProject(Project project) { this.project = project; foreach (Configuration configuration in project.GetConfigurations()) { writer.WriteStartElement("target"); writer.WriteAttributeString("name", project.Name + "." + Configuration.NantName(configuration.Name)); depends = null; foreach (Project dependency in solution.GetDependencies(project)) { if (depends != null) { depends += ","; } depends += dependency.Name + "." + Configuration.NantName(configuration.Name); } foreach (Project projectReference in project.GetReferencedProjects()) { if (depends != null) { depends += ","; } depends += projectReference.Name + "." + Configuration.NantName(configuration.Name); } if (depends != null) { writer.WriteAttributeString("depends", depends); } WriteProperty("project.name", project.Name); WriteProperty("build.dir", "${build.basedir}\\" + Configuration.NantName(configuration.Name)); WriteProperty("slingshot.config", configuration.Name); //WriteProperty("directory", Path.GetDirectoryName(project.GetRelativeOutputPathForConfiguration(configuration.Name))); WriteProperty("output", "${build.dir}\\" + Path.GetFileName(project.GetRelativeOutputPathForConfiguration(configuration.Name))); WriteProperty("debug", configuration.DebugSymbols ? "true" : "false"); WriteProperty("unsafe", configuration.AllowUnsafeBlocks ? "true" : "false"); WriteProperty("checked", configuration.CheckForOverflowUnderflow ? "true" : "false"); WriteProperty("define", configuration.DefineConstants); string documentationFile = Path.GetFileName(project.GetRelativePathToDocumentationFile(configuration.Name)); if (documentationFile != null && documentationFile.Length != 0) { WriteProperty("doc", "${build.dir}\\" + Path.GetFileName(project.GetRelativePathToDocumentationFile(configuration.Name))); } WriteProperty("warninglevel", configuration.WarningLevel); writer.WriteStartElement("call"); writer.WriteAttributeString("target", project.Name); writer.WriteEndElement(); // call writer.WriteEndElement(); // target } writer.WriteStartElement("target"); writer.WriteAttributeString("name", project.Name); }