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); }
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); } } } } } }