private void StartModify(string pAutoDir, string pModifyDir, string pProjectName) { //add file this.addAutoFileToDataTable(pAutoDir); foreach (DataRow dr in this._dt.Rows) { if ((Boolean)dr["IsCheck"]) { //选择 string fileName = dr["FileName"].ToString(); string modiFile = pModifyDir + "\\" + fileName; string autoFile = pAutoDir + "\\" + fileName; if (!File.Exists(autoFile)) { continue; } //自动加入项目 string projectFile = pModifyDir + "\\" + pProjectName + ".csproj"; if (File.Exists(projectFile)) { if (File.ReadAllText(projectFile, Encoding.Default).IndexOf(fileName) < 1) { //加入 this.AddClassFile(projectFile, fileName, ""); } } if (!File.Exists(modiFile)) { //DialogBox.ShowError("已修改的文件,不存在了!文件:" + modiFile); //直接复制 if (this.checkBoxIsCopy.Checked) { File.Copy(autoFile, modiFile); //加入表 DataRow drNewRow = _dtNewAdd.NewRow(); drNewRow["Project"] = pProjectName; drNewRow["FileName"] = autoFile; _dtNewAdd.Rows.Add(drNewRow); } continue; } string modifyString = ""; //直接用自动生成的文件内容替换现有项目的内容 //先备份 string sSource = ""; //读取文件 using (StreamReader sr = new StreamReader(modiFile, Encoding.Default)) { sSource = sr.ReadToEnd(); sr.Close(); } WriteFile(modiFile + ".bak", sSource); string s = ""; //读取生成的文件内容 using (StreamReader sr = new StreamReader(autoFile, Encoding.Default)) { modifyString = StringTool.GetValue(sr.ReadToEnd(), _start, _end); sr.Close(); } Regex renew = new Regex("(?<=(" + this._newstart + "))[.\\s\\S]*?(?=(" + this._newend + "))", RegexOptions.Multiline | RegexOptions.Singleline); Regex re = new Regex("(?<=(" + this._start + "))[.\\s\\S]*?(?=(" + this._end + "))", RegexOptions.Multiline | RegexOptions.Singleline); Regex re2 = new Regex("(?<=(" + this._start2 + "))[.\\s\\S]*?(?=(" + this._end2 + "))", RegexOptions.Multiline | RegexOptions.Singleline); if (renew.IsMatch(sSource)) { using (StreamReader sr = new StreamReader(autoFile, Encoding.Default)) { modifyString = StringTool.GetValue(sr.ReadToEnd(), _newstart, _newend); sr.Close(); } sSource = renew.Replace(sSource, modifyString); } else if (re.IsMatch(sSource)) { sSource = re.Replace(sSource, modifyString); } else { //一个空格 sSource = re2.Replace(sSource, modifyString); } //modifyString 是修改后的新内容 //modifyString = this._start + "\n\r" + modifyString+"\n\r"+this._end; //sSource = WriteFile(modiFile, sSource); } } }