Example #1
0
        // Project desirialization
        protected Mfconsulting.General.Prj2Make.Schema.Csproj.VisualStudioProject LoadPrjFromFile(string strIn)
        {
            FileStream fs = new FileStream(strIn, FileMode.Open, FileAccess.Read);

            XmlSerializer xmlSer = new XmlSerializer(typeof(Mfconsulting.General.Prj2Make.Schema.Csproj.VisualStudioProject));

            Mfconsulting.General.Prj2Make.Schema.Csproj.VisualStudioProject prjObj = (Mfconsulting.General.Prj2Make.Schema.Csproj.VisualStudioProject)xmlSer.Deserialize(fs);

            fs.Close();

            return(prjObj);
        }
Example #2
0
        public CsprojInfo(bool isUnixMode, bool isMcsMode, string name, string guid, string csprojpath)
        {
            this.name       = name;
            this.guid       = guid;
            this.csprojpath = csprojpath;

            makename           = name.Replace('.', '_').ToUpper();
            makename_ext       = makename + "_EXT";
            m_bAllowUnsafeCode = false;

            // convert backslashes to slashes
            csprojpath = csprojpath.Replace("\\", "/");

            // loads the file in order to deserialize and
            // build the object graph
            try
            {
                m_projObject = LoadPrjFromFile(csprojpath);
            }
            catch (Exception exc)
            {
                Console.WriteLine("CurrentDirectory={0}", Directory.GetCurrentDirectory());
                Console.WriteLine(
                    "Could not load the file {0}\n{1}: {2}\n{3}",
                    csprojpath,
                    exc.GetType().Name,
                    exc.Message,
                    exc.StackTrace
                    );
                return;
            }

            // Establish if the allow unsafe code flag is true
            foreach (Mfconsulting.General.Prj2Make.Schema.Csproj.Config cf in m_projObject.CSHARP.Build.Settings.Config)
            {
                if (cf.AllowUnsafeBlocks == true)
                {
                    m_bAllowUnsafeCode = true;
                }
            }

            switch (m_projObject.CSHARP.Build.Settings.OutputType)
            {
            case "Library":
                makename_ext  = makename + "_DLL";
                assembly_name = m_projObject.CSHARP.Build.Settings.AssemblyName + ".dll";
                switches     += " -target:library";
                break;

            case "Exe":
                makename_ext  = makename + "_EXE";
                assembly_name = m_projObject.CSHARP.Build.Settings.AssemblyName + ".exe";
                switches     += " -target:exe";
                break;

            case "WinExe":
                makename_ext  = makename + "_EXE";
                assembly_name = m_projObject.CSHARP.Build.Settings.AssemblyName + ".exe";
                switches     += " -target:winexe";
                break;

            default:
                throw new NotSupportedException("Unsupported OutputType: " + m_projObject.CSHARP.Build.Settings.OutputType);
            }

            src = "";
            string basePath = Path.GetDirectoryName(csprojpath);
            string s;

            foreach (Mfconsulting.General.Prj2Make.Schema.Csproj.File fl in m_projObject.CSHARP.Files.Include)
            {
                if (fl.BuildAction == Mfconsulting.General.Prj2Make.Schema.Csproj.FileBuildAction.Compile)
                {
                    if (src != "")
                    {
                        src += " \\\n\t";
                    }

                    string filePath = fl.Link;
                    if (filePath == null)
                    {
                        filePath = fl.RelPath;
                    }

                    s = System.IO.Path.Combine(basePath, filePath);
                    s = s.Replace("\\", "/");
                    if (SlnMaker.slash != "/")
                    {
                        s = s.Replace("/", SlnMaker.slash);
                    }

                    // Test for spaces
                    if (isUnixMode == false)
                    {
                        // We are in win32 using a cmd.exe or other
                        // DOS shell
                        if (s.IndexOf(' ') > -1)
                        {
                            src += String.Format("\"{0}\"", s);
                        }
                        else
                        {
                            src += s;
                        }
                    }
                    else
                    {
                        // We are in *NIX or some other
                        // GNU like shell
                        src += s.Replace(" ", "\\ ");
                    }
                }
            }

            res    = "";
            resgen = "";
            string rootNS = m_projObject.CSHARP.Build.Settings.RootNamespace;
            string relPath;

            foreach (Mfconsulting.General.Prj2Make.Schema.Csproj.File fl in m_projObject.CSHARP.Files.Include)
            {
                if (fl.BuildAction == Mfconsulting.General.Prj2Make.Schema.Csproj.FileBuildAction.EmbeddedResource)
                {
                    if (res != "")
                    {
                        res += " \\\n\t";
                    }

                    relPath = fl.RelPath.Replace("\\", "/");
                    s       = System.IO.Path.Combine(basePath, relPath);
                    if (Path.GetExtension(s) == ".resx")
                    {
                        string path = s;
                        path = path.Replace(@"\", "/");
                        if (SlnMaker.slash != "/")
                        {
                            path = path.Replace("/", SlnMaker.slash);
                        }
                        resgen += String.Format("{0} ", Quote(path));
                        s       = Path.ChangeExtension(s, ".resources");
                        relPath = Path.ChangeExtension(relPath, ".resources");
                    }
                    s = s.Replace("\\", "/");
                    string rp = relPath.Replace("/", ".").Replace("\\", "/");
                    s = String.Format("-resource:{0},{1}", Quote(s), rootNS + "." + rp);
                    if (SlnMaker.slash != "/")
                    {
                        s = s.Replace("/", SlnMaker.slash);
                    }
                    res += s;
                }
            }
        }
Example #3
0
        public CsprojInfo(bool isUnixMode, bool isMcsMode, string name, string guid, string csprojpath)
        {
            this.name = name;
            this.guid = guid;
            this.csprojpath = csprojpath;

            makename = name.Replace('.','_').ToUpper();
            makename_ext = makename + "_EXT";
            m_bAllowUnsafeCode = false;

            // convert backslashes to slashes
            csprojpath = csprojpath.Replace("\\", "/");

            // loads the file in order to deserialize and
            // build the object graph
            try
            {
                m_projObject = LoadPrjFromFile (csprojpath);
            }

            catch (Exception exc)
            {
                Console.WriteLine (
                    String.Format ("Could not load the file {0}\nException: {1}",
                    csprojpath,
                    exc.Message)
                    );
                return;
            }

            // Establish if the allow unsafe code flag is true
            foreach (Mfconsulting.General.Prj2Make.Schema.Csproj.Config cf in m_projObject.CSHARP.Build.Settings.Config)
            {
                if(cf.AllowUnsafeBlocks == true)
                    m_bAllowUnsafeCode = true;
            }

            switch (m_projObject.CSHARP.Build.Settings.OutputType)
            {
                case "Library":
                    makename_ext = makename + "_DLL";
                    assembly_name = m_projObject.CSHARP.Build.Settings.AssemblyName + ".dll";
                    switches += " -target:library";
                    break;

                case "Exe":
                    makename_ext = makename + "_EXE";
                    assembly_name = m_projObject.CSHARP.Build.Settings.AssemblyName + ".exe";
                    switches += " -target:exe";
                    break;

                case "WinExe":
                    makename_ext = makename + "_EXE";
                    assembly_name = m_projObject.CSHARP.Build.Settings.AssemblyName + ".exe";
                    switches += " -target:winexe";
                    break;

                default:
                    throw new NotSupportedException("Unsupported OutputType: " + m_projObject.CSHARP.Build.Settings.OutputType);

            }

            src = "";
            string basePath = Path.GetDirectoryName(csprojpath);
            string s;

            foreach (Mfconsulting.General.Prj2Make.Schema.Csproj.File fl in m_projObject.CSHARP.Files.Include)
            {
                if(fl.BuildAction == Mfconsulting.General.Prj2Make.Schema.Csproj.FileBuildAction.Compile)
                {
                    if (src != "")
                    {
                        src += " \\\n\t";
                    }

                    s = System.IO.Path.Combine(basePath, fl.RelPath);
                    s = s.Replace("\\", "/");
                    if (SlnMaker.slash != "/")
                        s = s.Replace("/", SlnMaker.slash);

                    // Test for spaces
                    if (isUnixMode == false) {
                        // We are in win32 using a cmd.exe or other
                        // DOS shell
                        if(s.IndexOf(' ') > -1) {
                            src += String.Format("\"{0}\"", s);
                        } else {
                            src += s;
                        }
                    } else {
                        // We are in *NIX or some other
                        // GNU like shell
                        src += s.Replace(" ", "\\ ");
                    }
                }
            }

            res = "";
            string rootNS = m_projObject.CSHARP.Build.Settings.RootNamespace;
            string relPath;
            foreach (Mfconsulting.General.Prj2Make.Schema.Csproj.File fl in m_projObject.CSHARP.Files.Include)
            {
                if(fl.BuildAction == Mfconsulting.General.Prj2Make.Schema.Csproj.FileBuildAction.EmbeddedResource)
                {
                    if (res != "") {
                        res += " \\\n\t";
                    }

                    relPath = fl.RelPath.Replace("\\", "/");
                    s = System.IO.Path.Combine(basePath, relPath);
                    s = String.Format("-resource:{0},{1}", s, rootNS + "." + relPath.Replace("/", "."));
                    s = s.Replace("\\", "/");
                    if (SlnMaker.slash != "/")
                        s = s.Replace("/", SlnMaker.slash);
                    res += s;
                }
            }
        }