操作环境
.net 5
centos7
vistual studio 2019(16.11.15)
win10
到了.net core还是使用以前.net framework的Process类,但是有点特殊的是Process类必须指定UseShellExecute,.net framework平台下的App下的值为true,.net core平台下的app的值为false
代码如下:
using System;
using System.Diagnostics;
using System.IO;
using System.Text;
using System.Threading;
namespace Demo1
{
class Program
{
static void Main(string[] args)
{
OpenShellAppHelper openApplication = new OpenShellAppHelper();
if (args != null && args.Length == 2)
{
Console.WriteLine("正在打开");
openApplication.Start(args[0], args[1] == "true" ? true : false);
Thread.Sleep(5000);
openApplication.OnDestroy();
Console.WriteLine("释放资源完毕");
}
Console.ReadLine();
}
public class OpenShellAppHelper
{
Process pro;
string pathURL; //app或者shell程序的路径
//启动外部app或者shell脚本
public void Start(string FilePathAndName,bool ShellExecuteFlag)
{
pathURL = FilePathAndName;// "E:/VSProject/Demo1/Demo1/bin/Debug/net5.0/FilePath/text.txt";
pro = new Process();
pro.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal; //把窗口隐藏,使其在后台运行
pro.StartInfo.FileName = pathURL; //设置要打开的exe程序的路径
pro.StartInfo.UseShellExecute = ShellExecuteFlag;
pro.Start(); //启动exe程序
}
//退出时杀死进程
public void OnDestroy()
{
if (pro != null)
{
pro.Kill(); //杀死所有的进程
pro.Dispose(); //释放所有的资源
pro.Close(); //关闭exe程序
}
}
}
}
}
window平台下的执行结果:
如果上图中的true修改为false则会报错
Linux平台下的执行结果:
App.sh对应的shell脚本命令如下: