3

如何使用 Process.Start API 以单声道启动进程?我最好的猜测是以下(in F#):

let start (path : string) = 
    System.Diagnostics.Process.Start("/usr/bin/env", sprintf "mono \"%s\"" path)

这似乎在 linux 中有效,但在 Mono/Windows 中显然不正确。有什么方法可以以编程方式获取单声道可执行文件的位置吗?

4

3 回答 3

1

事实证明,您基本上可以只Process.Start使用目标可执行文件路径,无需指定单声道可执行文件。

于 2014-08-15T00:17:06.720 回答
0

您可以使用以下注册表项在 Windows 上找到 Mono 的位置

$version = HKLM_LOCAL_MACHINE\Software\Novell\Mono\DefaultCLR
$monoprefix = HKLM_LOCAL_MACHINE\Software\Novell\Mono\$version\SdkInstallRoot

在哪里使用找到的版本来查找单声道前缀。

取自此页面

于 2013-09-10T11:08:41.790 回答
0

您可以从现有实例中启动程序集,而不是启动 CLR 的新实例。Microsoft 在此处记录了相关功能:http: //msdn.microsoft.com/en-us/library/yk22e11a%28v=vs.110%29.aspx。Mono 也实现了这一点。

您需要做的是创建一个新的 AppDomain 来为您提供与当前环境隔离的执行环境,在其中加载程序集并执行它。

例子:

var domain = AppDomain.CreateDomain("Foo");
domain.ExecuteAssembly("Bar.exe");
于 2014-08-13T22:18:05.650 回答