Process.Start与Linux上的.NET Core 2.0

时间:2018-04-05 05:09:54

标签: c# linux .net-core

我正在尝试启动默认Web浏览器以打开与Process.Start()的链接。我使用Process.Start(" https://www.google.com"),但我的.NET Core App崩溃了以下内容:

  

发生异常:CLR / System.ComponentModel.Win32Exception An   未处理的类型' System.ComponentModel.Win32Exception'   发生在System.Diagnostics.Process.dll中:'没有这样的文件或   目录'在System.Diagnostics.Process.ResolvePath(String   filename)在System.Diagnostics.Process.StartCore(ProcessStartInfo   startInfo)在System.Diagnostics.Process.Start()at   System.Diagnostics.Process.Start(ProcessStartInfo startInfo)at   VPGameHelper.Program.Main(String [] args)in   /home/jj/VPGameHelper/Program.cs:line 30

1 个答案:

答案 0 :(得分:2)

我认为这可能就是你要找的东西:

Process.Start for URLs on .NET Core

最初的问题被问到here在哪里。

public static void OpenBrowser(string url)
{
    try
    {
        Process.Start(url);
    }
    catch
    {
        // hack because of this: https://github.com/dotnet/corefx/issues/10361
        if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
        {
            url = url.Replace("&", "^&");
            Process.Start(new ProcessStartInfo("cmd", $"/c start {url}") { CreateNoWindow = true });
        }
        else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
        {
            Process.Start("xdg-open", url);
        }
        else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
        {
            Process.Start("open", url);
        }
        else
        {
            throw;
        }
    }
}

欢呼和快乐的编码!