示例#1
0
        private void DoWork(object sender, DoWorkEventArgs e)
        {
            SetEnable(false);

            var dateFileStr = DateTime.Now.ToString("yyyy-MM-dd HH");

            var retVal = string.Empty;

            var richText = new Utils.RichTextBoxUtils(this.rtbMessage);

            richText.Write("==========发布程序开始==========");
            //修改/Config/SystemConfig.config版本号
            retVal = UpateVersion(richText);
            if (VerifyResult(retVal))
            {
                return;
            }

            //发布解决方案
            retVal = Publish(richText);
            if (VerifyResult(retVal))
            {
                return;
            }
            //移除配置
            retVal = RemoveConfig(richText);
            if (VerifyResult(retVal))
            {
                return;
            }
            //打包发布文件
            retVal = Pack(richText, dateFileStr);
            if (VerifyResult(retVal))
            {
                return;
            }
            //先导出数据配置
            if (chkDataExport.Checked)
            {
                retVal = DataExport(richText, dateFileStr);
                if (VerifyResult(retVal))
                {
                    return;
                }
            }
            //后备份源码
            retVal = BackupSourceCode(richText);
            if (VerifyResult(retVal))
            {
                return;
            }

            richText.Write("==========发布程序完成==========");
        }
示例#2
0
        //发布解决方案
        private string Publish(Utils.RichTextBoxUtils richText)
        {
            var retVal = string.Empty;

            richText.Write("正在发布解决方案");
            try
            {
                var sln                 = txtSln.Text;
                var publishDir          = txtPublishProfiles.Text;
                var webProjectOutputDir = Path.Combine(publishDir, "Artifact");
                var outDir              = Path.Combine(publishDir, "bin");
                var use32BitMsBuild     = false;
                var useDebug            = false;

                if (Directory.Exists(publishDir))
                {
                    var dir = new DirectoryInfo(publishDir);
                    dir.Delete(true);
                }

                var script = File.ReadAllText(@"PSScript\PSPulish.ps1");

                using (Runspace runspace = RunspaceFactory.CreateRunspace())
                {
                    runspace.Open();
                    PowerShell ps = PowerShell.Create();
                    ps.Runspace = runspace;
                    ps.AddScript(script);
                    ps.Invoke();
                    ps.AddCommand("InvokeMsBuild").AddParameters(
                        new Dictionary <string, object>()
                    {
                        { "Path", sln },
                        { "WebProjectOutputDir", webProjectOutputDir },
                        { "OutDir", outDir },
                        { "Use32BitMsBuild", use32BitMsBuild },
                        { "UseDebug", useDebug }
                    }
                        );
                    foreach (var result in ps.Invoke())
                    {
                        retVal += result;
                    }
                    richText.Write("发布解决方案完成" + retVal);
                }
            }
            catch (Exception ex)
            {
                retVal = "执行InvokeMsBuild出错:" + ex.Message;
                richText.Write("发布解决方案错误:" + retVal);
            }
            return(retVal);
        }
示例#3
0
        // 源码备份
        private string BackupSourceCode(Utils.RichTextBoxUtils richText)
        {
            var retVal     = string.Empty;
            var notDirName = ".vs"; //vs开发工具配置文件,过滤不备份

            try
            {
                var backDir = txtBackUpDir.Text;
                if (string.IsNullOrEmpty(backDir))
                {
                    return(retVal);
                }

                richText.Write("正在备份源码");

                var sln = txtSln.Text;

                var dir = Directory.GetParent(sln);

                var from = dir.FullName;

                var fileName = Path.GetFileNameWithoutExtension(sln);

                var to = Path.Combine(txtBackUpDir.Text, fileName + DateTime.Now.ToString("yyyy-MM-dd HH") + ".zip");

                retVal = ArchiveFromTo(from, to, notDirName);
                //ZipHelper.ZipFileDirectory(from, to);
                //ArchiveFromTo(from, to, notDirName);
                if (!string.IsNullOrEmpty(retVal))
                {
                    richText.Write("源码备份出错: " + retVal);
                }

                richText.Write("备份源码完成");
            }
            catch (Exception ex)
            {
                retVal = "源码备份出错:" + ex.Message;

                richText.Write("备份源码错误:" + retVal);
            }

            return(retVal);
        }
示例#4
0
        //打包发布文件
        private string Pack(Utils.RichTextBoxUtils richText, string dateFileStr)
        {
            richText.Write("正在打包发布文件");

            var retVal = string.Empty;

            try
            {
                var dirPublish = Path.Combine(txtPublishProfiles.Text, "Artifact");

                var xmlPath = Path.Combine(dirPublish, "Config", "SystemConfig.config");

                XmlDocument xml = new XmlDocument();
                xml.Load(xmlPath);//读取文件地址

                var softVersion = xml.DocumentElement.GetElementsByTagName("SoftVersion")[0].InnerText;

                if (string.IsNullOrEmpty(softVersion))
                {
                    softVersion = DateTime.Now.ToString("yyyymmddhhmmss");
                }
                softVersion = "V" + softVersion;

                var dateFileDirStr = Path.Combine(txtPublishProfiles.Text, dateFileStr);

                CreateDirNot(dateFileDirStr);

                var to = Path.Combine(dateFileDirStr, softVersion + ".zip");

                retVal = ArchiveFromTo(dirPublish, to);
                if (!string.IsNullOrEmpty(retVal))
                {
                    richText.Write("打包发布文件错误:" + retVal);
                }

                richText.Write("打包发布文件完成");
            }
            catch (Exception ex)
            {
                retVal = "打包发布文件出错:" + ex.Message;
                richText.Write("打包发布文件错误:" + retVal);
            }
            return(retVal);
        }
示例#5
0
        //修改/Config/SystemConfig.config版本号
        private string UpateVersion(Utils.RichTextBoxUtils richText)
        {
            var retVal = string.Empty;

            richText.Write("正在修改版本号");
            try
            {
                //解决方案路径
                var sln = txtSln.Text;
                //解决方案目录
                var dirSln = Path.GetDirectoryName(sln);
                //hy.Web/Config/SystemConfig.config
                var pathVersion = Path.Combine(dirSln, "hy.Web", "Config", "SystemConfig.config");
                //xml加载
                XmlDocument xml = new XmlDocument();
                xml.Load(pathVersion);
                //获取旧版本信息
                var softVersion = xml.DocumentElement.GetElementsByTagName("SoftVersion")[0].InnerText;
                //当前时间
                var dateTime = DateTime.Now;
                //最新版本号
                var v = $"{softVersion.Split('.')[0]}.{dateTime.ToString("yy.MM.ddHH")}";
                //1.20.08.0511 大版本.年.月.日时
                xml.DocumentElement.GetElementsByTagName("SoftVersion")[0].InnerText = v;
                //保存修改值
                xml.Save(pathVersion);

                richText.Write("修改版本号完成.");
            }
            catch (Exception ex)
            {
                retVal = "执行修改版本号出错:" + ex.Message;
                richText.Write("修改版本号:" + retVal);
            }
            return(retVal);
        }
示例#6
0
        // 删除配置文件
        private string RemoveConfig(Utils.RichTextBoxUtils richText)
        {
            string retVal = string.Empty;

            var listRemoveDir = new List <string> {
                "App_Data"
            };
            var listConfigDirConfig = System.Configuration.ConfigurationManager.AppSettings["deleteFiles"].Split(',').ToList();

            var listRemove = new List <string>();

            listRemove.AddRange(listRemoveDir);
            listRemove.AddRange(listConfigDirConfig);

            richText.Write(string.Format("正在删除配置,{0}", string.Join(",", listRemove)));

            #region 需要删除的目录下的文件
            List <FileConfiDTO> DirFileConfig = new List <FileConfiDTO>();
            foreach (string str in listConfigDirConfig)
            {
                string[] arr = str.Split('/');
                if (arr.Length > 2)
                {
                    retVal = $"文件配置错误,应该使用 / 隔开,只支持一级目录:{str}";
                    richText.Write("删除配置错误:" + retVal);
                    return(retVal);
                }
                FileConfiDTO model = new FileConfiDTO();
                if (arr.Length == 1)
                {
                    model.DirName  = "";
                    model.FileName = arr[0];
                }
                else if (arr.Length == 2)
                {
                    model.DirName  = arr[0];
                    model.FileName = arr[1];
                }
                DirFileConfig.Add(model);
            }
            #endregion

            try
            {
                var dirArtifact = Path.Combine(txtPublishProfiles.Text, "Artifact");

                var dirFileInfo = new DirectoryInfo(dirArtifact);
                var dirFiles    = dirFileInfo.GetFiles();
                if (dirFiles != null && dirFiles.Count() > 0)
                {
                    #region  除根目录的配置文件
                    foreach (var item in dirFiles)
                    {
                        #region  除根目录的配置文件
                        foreach (var en in DirFileConfig)
                        {
                            if (string.IsNullOrEmpty(en.DirName))
                            {
                                if (item.Name.ToLower() == en.FileName.ToLower())
                                {
                                    item.Delete();
                                }
                            }
                        }
                        #endregion
                    }
                    #endregion
                }

                var dirs = dirFileInfo.GetDirectories();
                if (dirs != null && dirs.Count() > 0)
                {
                    foreach (var dir in dirs)
                    {
                        #region  除文件夹
                        if (listRemoveDir.Contains(dir.Name))
                        {
                            dir.Delete(true);
                        }
                        #endregion

                        #region  除 一级目录下面的文件
                        foreach (var en in DirFileConfig)
                        {
                            if (en.DirName.ToLower() == dir.Name.ToLower())
                            {
                                var dirConfigFiles = dir.GetFiles();
                                if (dirConfigFiles != null && dirConfigFiles.Count() > 0)
                                {
                                    foreach (var item in dirConfigFiles)
                                    {
                                        if (item.Name.ToLower() == en.FileName.ToLower())
                                        {
                                            item.Delete();
                                        }
                                    }
                                }
                            }
                        }
                        #endregion
                    }
                }

                richText.Write("删除配置完成");
            }
            catch (Exception ex)
            {
                retVal = "删除配置文件失败:" + ex.Message;
                richText.Write("删除配置错误:" + retVal);
            }
            return(retVal);
        }