WPF 項目遷移到.Net Core中時居然出了一堆問題...(很無語)
今天在使用的時候居然發現Process.Start居然打不開Url鏈接了? 報 找不到指定文件 的異常?!
一、bug重現
首先以.Net Core 3.1框架 中一個Console項目 打開百度為例:
運行然後你就會得到:
納悶的是,這種方法打開Url在.Net Framework中是沒問題的..
二、解決方法
方案一:使用windows系統自帶的資源管理器來打開Url
<code>Process.Start("explorer", "https://www.baidu.com");/<code>
你就可以得到一個瀏覽器窗口,打開著百度網頁..
但是如果你的Url複雜一點的話,例如打開百度搜索what
<code>Process.Start("explorer", "https://www.baidu.com/s?wd=what");/<code>
<code>explorer表示不幹,並直接給你拋了個文件管理器窗口
所以這個方法只可以用於打開簡單的URL...
方案二:使用cmd中的start命令 可以打開任意形式的URL/<code>
<code>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();/<code>
以上的問題我只在Windows平臺上找到過,不知Linux和OSX有沒有...
閱讀更多 愛踢狂人 的文章