public static ProgramSetting Load(string path)
        {
            ProgramSetting o = new ProgramSetting();

            Dictionary <string, string> settingDict = new Dictionary <string, string>();

            if (File.Exists(path))
            {
                string[] lines = File.ReadAllLines(path);
                foreach (string line in lines)
                {
                    string[] arr = line.Split('=');
                    if (arr.Length == 2)
                    {
                        string key = arr[0].Trim();
                        string val = arr[1].Trim();
                        settingDict[key] = val;
                    }
                }
            }

            if (settingDict.ContainsKey("csproj"))
            {
                o.csproj = settingDict["csproj"];
            }

            if (settingDict.ContainsKey("rootSrc"))
            {
                o.rootSrc = settingDict["rootSrc"];
            }

            if (settingDict.ContainsKey("rootDest"))
            {
                o.rootDest = settingDict["rootDest"];
            }

            if (settingDict.ContainsKey("replace"))
            {
                o.replace = settingDict["replace"] == "true" || settingDict["replace"] == "1";
            }


            return(o);
        }
Esempio n. 2
0
        static void Main(string[] args)
        {
            ProgramSetting setting = ProgramSetting.Load();

            if (!ProgramSetting.IsExists())
            {
                setting.Generate();
            }

            if (!File.Exists(setting.csproj))
            {
                ErrorFormat("no find file!! setting.csproj={0}", setting.csproj);
                Console.ReadLine();
                Console.WriteLine("Press 'Enter' key To End");
                return;
            }

            int         index = 0;
            XmlDocument doc   = new XmlDocument();

            doc.Load(setting.csproj);


            XmlNodeList xnl = doc.ChildNodes[0].ChildNodes;

            if (doc.ChildNodes[0].Name.ToLower() != "project")
            {
                xnl = doc.ChildNodes[1].ChildNodes;
            }

            foreach (XmlNode xn in xnl)
            {
                if (xn.ChildNodes.Count > 0 && xn.Name.ToLower() == "itemgroup")
                {
                    foreach (XmlNode cxn in xn.ChildNodes)
                    {
                        if (cxn.Name.ToLower() == "compile")
                        {
                            XmlElement compile = (XmlElement)cxn;
                            if (compile.HasAttribute("Include") && compile.HasAttribute("Link"))
                            {
                                string include = compile.GetAttribute("Include");
                                string link    = compile.GetAttribute("Link");

                                string src  = Path.Combine(setting.rootSrc, include);
                                string dest = Path.Combine(setting.rootDest, link);

                                src  = src.Replace("\\", "/");
                                dest = dest.Replace("\\", "/");

                                if (!File.Exists(src))
                                {
                                    ErrorFormat("No Find File: {0}", src);
                                    continue;
                                }

                                if (setting.replace == false && File.Exists(dest))
                                {
                                    LogFormat("Skip File: {0}", src);
                                }

                                string destDir = Path.GetDirectoryName(dest);
                                if (!Directory.Exists(destDir))
                                {
                                    Directory.CreateDirectory(destDir);
                                }

                                File.Copy(src, dest, setting.replace);
                            }
                        }
                    }
                }
            }
        }