Exemple #1
0
        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);
                }
            }
        }