I am trying to start the default web browser open to a link with Process.Start()
. I use Process.Start("https://www.google.com")
, but my .NET Core App crashes with the following:
Exception has occurred: CLR/System.ComponentModel.Win32Exception An unhandled exception of type ‘System.ComponentModel.Win32Exception’ occurred in System.Diagnostics.Process.dll: ‘No such file or directory’ at System.Diagnostics.Process.ResolvePath(String filename) at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo) at 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
Advertisement
Answer
I think this might be what you are looking for:
Process.Start for URLs on .NET Core
The original question was asked here where.
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;
}
}
}
Cheers and happy coding!