Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        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();
        }
Esempio n. 3
0
        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);
        }