Skip to content

Commit 44ec8b2

Browse files
committed
允许对执行命令进行过滤,解决执行命令输出乱码
1 parent 2ea54d7 commit 44ec8b2

File tree

2 files changed

+12
-4
lines changed

2 files changed

+12
-4
lines changed

DotNETBuild/Utils/DotNetBuildTools_/DotNetBuildTool.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
using System.ComponentModel;
1+
using System;
2+
using System.ComponentModel;
3+
using System.Diagnostics;
4+
25
using dotnetCampus.Configurations;
36
using Microsoft.Extensions.Logging;
47

@@ -41,9 +44,10 @@ protected DotNetBuildTool(IAppConfigurator appConfigurator, ILogger logger = nul
4144
/// <param name="arguments"></param>
4245
/// <param name="workingDirectory">默认将使用当前进程工作路径</param>
4346
/// <param name="needAutoLogOutput">是否实时输出</param>
47+
/// <param name="processStartInfoFilter">用于对输入过程的过滤。如设置编码等</param>
4448
/// <returns></returns>
4549
protected ProcessResult ExecuteProcessCommand(string exeName, string arguments,
46-
string workingDirectory = "", bool needAutoLogOutput = true)
50+
string workingDirectory = "", bool needAutoLogOutput = true, Action<ProcessStartInfo>? processStartInfoFilter = null)
4751
{
4852
Logger.LogInformation($"{exeName} {arguments}");
4953

@@ -61,7 +65,7 @@ protected ProcessResult ExecuteProcessCommand(string exeName, string arguments,
6165
Logger.LogWarning(message);
6266
}
6367
}
64-
});
68+
}, processStartInfoFilter);
6569
Logger.LogInformation($"ExitCode: {result.ExitCode}");
6670

6771
return result;

DotNETBuild/Utils/ProcessRunner_/ProcessRunner.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,10 @@ public static class ProcessRunner
1717
/// <param name="arguments"></param>
1818
/// <param name="workingDirectory"></param>
1919
/// <param name="onReceivedOutput">当收到进程输出触发</param>
20+
/// <param name="processStartInfoFilter">用于对输入过程的过滤。如设置编码等</param>
2021
/// <returns></returns>
2122
public static ProcessResult ExecuteCommand(string exeName, string arguments,
22-
string workingDirectory = "", Action<ProcessOutputInfo>? onReceivedOutput = null)
23+
string workingDirectory = "", Action<ProcessOutputInfo>? onReceivedOutput = null, Action<ProcessStartInfo>? processStartInfoFilter = null)
2324
{
2425
var processStartInfo = new ProcessStartInfo
2526
{
@@ -38,6 +39,8 @@ public static ProcessResult ExecuteCommand(string exeName, string arguments,
3839
//StandardOutputEncoding = Encoding.UTF8
3940
};
4041

42+
processStartInfoFilter?.Invoke(processStartInfo);
43+
4144
var processOutputInfoList = new List<ProcessOutputInfo>();
4245

4346
var process = new Process();
@@ -80,5 +83,6 @@ public static ProcessResult ExecuteCommand(string exeName, string arguments,
8083
processOutputInfoList.TrimExcess();
8184
return new ProcessResult(exitCode, processOutputInfoList);
8285
}
86+
8387
}
8488
}

0 commit comments

Comments
 (0)