### RySmartEditor V1.0.2507.1601 - *.[新增]新增文件内容索引搜索。 - *.[新增]新增打开文件自动定位到指定行的功能。 ### SuperDesign V3.0.2507.1601 #### 网页抓取工具 - *.[修复]修复历史记录无法记录的BUG。 #### 编码解码 - *.[新增]新增svg图片代码转Geometry代码的功能。 #### 项目功能->项目管理 - *.[新增]互斥运行标准改为以毕方文件夹为准,而不是以项目文件为准。 - *.[新增]支持同个毕方项目可以不用重启来快捷切换不同子项目。 - *.[新增]支持发布时和打包时自动编译功能。 - *.[修复]修复项目输出路径为相对路径时,更新引用dll可能不成功的BUG。
134 lines
5.7 KiB
C#
134 lines
5.7 KiB
C#
using ryCommon;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.ComponentModel;
|
||
using System.Data;
|
||
using System.Diagnostics;
|
||
using System.Drawing;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
using System.Windows.Forms;
|
||
|
||
namespace SuperDesign.Tools.UpLog
|
||
{
|
||
public partial class FrmBuilding : Form
|
||
{
|
||
public FrmBuilding()
|
||
{
|
||
InitializeComponent();
|
||
}
|
||
public List<BuildComand> BuildingList { get; set; }=new List<BuildComand>();
|
||
|
||
private void FrmBuilding_Shown(object sender, EventArgs e)
|
||
{
|
||
Task.Run(() =>
|
||
{
|
||
var err_count = 0;
|
||
var success_count = 0;
|
||
var index = 0;
|
||
foreach (var item in BuildingList)
|
||
{
|
||
index++;
|
||
this.Invoke(new Action(() =>
|
||
{
|
||
Text = "[" + item.Name + "]编译中["+index+"/"+ BuildingList.Count+ "]...";
|
||
}));
|
||
Process p = new Process
|
||
{
|
||
StartInfo = new System.Diagnostics.ProcessStartInfo
|
||
{
|
||
FileName = "D:\\Program Files\\Microsoft Visual Studio\\2022\\Professional\\Common7\\IDE\\devenv.com",//设定程序名
|
||
Arguments = item.Comand,
|
||
UseShellExecute = false, //关闭shell的使用
|
||
RedirectStandardInput = true, //重定向标准输入
|
||
RedirectStandardOutput = true, //重定向标准输出
|
||
RedirectStandardError = false, //重定向错误输出
|
||
WorkingDirectory = "",
|
||
StandardOutputEncoding = Encoding.Default,
|
||
CreateNoWindow = true//设置不显示窗口
|
||
}
|
||
};
|
||
p.Start();
|
||
while (!p.StandardOutput.EndOfStream)
|
||
{
|
||
string line = p.StandardOutput.ReadLine();
|
||
if (line.StartsWith("版权所有"))
|
||
{
|
||
continue;
|
||
}
|
||
var color=Color.Black;
|
||
//ryProcessManager=>========== 生成: 0 成功,0 失败,3 最新,0 已跳过
|
||
if (line.IndexOfEx("生成:")>=0 && line.IndexOfEx("成功") >= 0 && line.IndexOfEx("失败") >= 0 && line.IndexOfEx("已跳过") >= 0)
|
||
{
|
||
if (line.IndexOfEx(",0 失败")<0)
|
||
{
|
||
err_count++;
|
||
color = Color.Red;
|
||
}
|
||
else{
|
||
success_count++;
|
||
color = Color.Blue;
|
||
}
|
||
}
|
||
this.Invoke(new Action(() =>
|
||
{
|
||
if (richTextBox1.Text.Length == 0)
|
||
{
|
||
richTextBox1.Text =item.Name+"=>"+line;
|
||
if(color!=Color.Black)
|
||
{
|
||
richTextBox1.SelectionStart = 0;
|
||
richTextBox1.SelectionLength = richTextBox1.Text.Length;
|
||
richTextBox1.SelectionColor = color;
|
||
richTextBox1.SelectionFont = new Font(richTextBox1.Font, FontStyle.Bold);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
var start=richTextBox1.Text.Length;
|
||
richTextBox1.AppendText("\n" + item.Name + "=>" + line);
|
||
if (color != Color.Black)
|
||
{
|
||
richTextBox1.SelectionStart = start;
|
||
richTextBox1.SelectionLength = richTextBox1.Text.Length- start;
|
||
richTextBox1.SelectionColor = color;
|
||
richTextBox1.SelectionFont = new Font(richTextBox1.Font, FontStyle.Bold);
|
||
}
|
||
}
|
||
richTextBox1.SelectionStart = richTextBox1.Text.Length;
|
||
richTextBox1.SelectionLength = 0;
|
||
richTextBox1.SelectionColor = Color.Black;
|
||
richTextBox1.SelectionFont = richTextBox1.Font;
|
||
}));
|
||
}
|
||
}
|
||
this.Invoke(new Action(() =>
|
||
{
|
||
Text = "编译完成";
|
||
if(err_count>0)
|
||
{
|
||
canexit = true;
|
||
MessageBox.Show("部分生成失败,成功:"+success_count+"个,失败"+err_count+"个", "部分生成失败", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||
return;
|
||
}
|
||
DialogResult = DialogResult.OK;
|
||
}));
|
||
});
|
||
}
|
||
bool canexit = false;
|
||
private void FrmBuilding_FormClosing(object sender, FormClosingEventArgs e)
|
||
{
|
||
if(DialogResult != DialogResult.OK && !canexit)
|
||
{
|
||
e.Cancel = true;
|
||
}
|
||
}
|
||
}
|
||
public class BuildComand
|
||
{
|
||
public string Comand { get; set; } = "";
|
||
public string Name { get; set; } = "";
|
||
}
|
||
}
|