.NET Framework時代
URLをブラウザで開くとき、以下のコードを良く使っていました。
private void btn_Click(object sender, EventArgs e)
{
Process.Start("https://qiita.com/");
}
.NET Core以降
しかし、.NET Core以降で同じコードを実行すると、ファイルが無いと言われてエラーになってしまいます。
実行するためには、ProcessStartInfo
のUseShellExecute
をtrue
に設定する必要があります。
private void btn_Click(object sender, EventArgs e)
{
Process.Start(new ProcessStartInfo("https://qiita.com/") { UseShellExecute = true });
// Process.Start(new ProcessStartInfo { FileName = "https://qiita.com/", UseShellExecute = true }); // これでもOK
}
原因
ProcessStartInfo.UseShellExecute
プロパティの既定値が.NET Frameworkではtrue
、.NET Core以降ではfalse
となっているため。
The default is true on .NET Framework apps and false on .NET Core apps.