WPF 項目遷移到.Net Core中時居然出了一堆問題...(很無語)
今天在使用的時候居然發現Process.Start居然打不開Url鏈接了? 報 找不到指定文件 的異常?!
一、bug重現
首先以.Net Core 3.1框架 中一個Console項目 打開百度為例:
運行然后你就會得到:
納悶的是,這種方法打開Url在.Net Framework中是沒問題的..
二、解決方法
方案一:使用windows系統自帶的資源管理器來打開Url
Process.Start("explorer", "https://www.baidu.com");
你就可以得到一個瀏覽器窗口,打開着百度網頁..
但是如果你的Url復雜一點的話,例如打開百度搜索what
Process.Start("explorer", "https://www.baidu.com/s?wd=what");
explorer表示不干,並直接給你拋了個文件管理器窗口
所以這個方法只可以用於打開簡單的URL...
方案二:使用cmd中的start命令 可以打開任意形式的URL
string url = "https://www.baidu.com/s?wd=what"; Process p = new Process(); p.StartInfo.FileName = "cmd.exe"; p.StartInfo.UseShellExecute = false; //不使用shell啟動 p.StartInfo.RedirectStandardInput = true;//喊cmd接受標准輸入 p.StartInfo.RedirectStandardOutput = false;//不想聽cmd講話所以不要他輸出 p.StartInfo.RedirectStandardError = true;//重定向標准錯誤輸出 p.StartInfo.CreateNoWindow = true;//不顯示窗口 p.Start(); //向cmd窗口發送輸入信息 后面的&exit告訴cmd運行好之后就退出 p.StandardInput.WriteLine("start "+url + "&exit"); p.StandardInput.AutoFlush = true; p.WaitForExit();//等待程序執行完退出進程 p.Close();
OK
以上的問題我只在Windows平台上找到過,不知Linux和OSX有沒有...
Thanks