在mono中运行一个C#程序,以启动另一个C#程序

5

我目前正在运行一款用C#编写的服务器软件程序,我正在尝试在Linux上为该.net软件添加支持。几乎所有内容在mono下都正常工作,但有些问题无法解决。例如,在服务器软件成功关闭时,另一个用C#编写的外部程序应立即弹出并从文本文件发送数据心跳。在.net环境中,例如Windows 7,这很简单。

Process.Start("Heartbeat.exe");

就是这样,它会弹出来。

还有,当服务器软件检测到主机操作系统正在运行mono时,在服务器关闭功能时,我尝试运行其他代码。上面的代码没有效果。我尝试了这个,但我可能不知道自己在做什么。

ProcessStartInfo procInfo = new ProcessStartInfo();
procInfo.UseShellExecute = false;
procInfo.FileName = "Heartbeat.exe";
Process.Start(procInfo);  

这也不起作用。我试过运行一个.sh文件来使用mono参数运行.exe文件,但是效率非常低下。非常感激任何帮助。(在你们责骂我阅读mono和ProcessStartInfo API文档之前,我已经都看了,但我仍然一无所知。而且mono API很奇怪。)
注:感谢Lex Li的解答,但是在使用

时出现了问题。
Process.Start("mono Heartbeat.exe")

I get this error:

Error when getting information for file '/home/me/Desktop/LCDev/mono Heartbeat.exe': No such file or directory

我认为上述代码试图运行一个名为 "mono Heartbeat.exe" 的程序,而不是使用 mono 打开 Heartbeat.exe。
1个回答

10

C#应用程序必须在Linux上使用mono启动,因此您应该使用

Process.Start("mono", "full_path_of_your_exe");


获取文件“/home/me/Desktop/LCDev/mono Heartbeat.exe”的信息时出错:没有这样的文件或目录。 - voice
刚刚编辑了。忘记了你的exe路径应该作为参数传递。 - Lex Li
啊,当我添加了 ProcessStartInfo.CreateNoWindow = true; 时它就起作用了。 - voice
我收到了这个错误信息:"xdg-open: 意外的参数 'full_path_of_your_exe'"。 - mcmillab

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接