如何使用Process.Start API以单声道启动流程?我最好的猜测是以下(F#
):
let start (path : string) =
System.Diagnostics.Process.Start("/usr/bin/env", sprintf "mono \"%s\"" path)
这似乎适用于linux,但在Mono / Windows中显然不正确。有没有办法以编程方式获取单声道可执行文件的位置?
答案 0 :(得分:1)
事实证明,你只需要Process.Start
只需要目标可执行路径,而不需要指定单声道可执行文件。
答案 1 :(得分:0)
您可以使用以下注册表项在Windows上找到Mono的位置
$version = HKLM_LOCAL_MACHINE\Software\Novell\Mono\DefaultCLR
$monoprefix = HKLM_LOCAL_MACHINE\Software\Novell\Mono\$version\SdkInstallRoot
您使用找到的版本找到单声道前缀。
答案 2 :(得分: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");