調試時無法開啟IE視窗的問題
原文作者 Kevin Yang
原文連結 http://www.imkevinyang.com/2009/09/%E8%A7%A3%E5%86%B3silverlight%E6%97%A0%E6%B3%95%E8%B0%83%E8%AF%95%E7%9A%84%E9%97%AE%E9%A2%98.html
這個問題是我最近才遇到的,我也不知道為什麼突然之間,我的Silverlight工程按下F5的時候無法調試,彈出下面這個對話方塊:Unable to start debugging. Cannot locate Microsoft Internet Explorer.
如果直接運行,那麼能夠開啟,但是開啟之後Visual Studio還是會彈出一樣的錯誤。
這個問題折騰了我半天,我嘗試了重啟電腦,重裝Silverlight Tools,建立乾淨的測試工程,修改系統和Visual Studio的預設瀏覽器(注意,系統和Visual Studio的預設瀏覽器是獨立設定的)均以失敗告終。Google了很久,Silverlight官方論壇上倒是有不少文章和這個相關的,但我細細看了之後發現沒有一個回帖能夠解決我的問題的。有個發帖的傢伙問題是解決了,但是不把怎麼解決的說一下就跑了,強烈bs一下這種人!
話說回來,我最後是怎麼解決這個問題的呢,是用了Process Monitor這個小工具(微軟Sysinternal榮譽出品!)。之前有一次asp.net網站的GlobalError裡頭出現了一個“檔案不存在”的HTTPException,查了半天沒查出來,後來使用這個工具監視了一下WebDevServ.exe進程之後發現該進程嘗試去訪問某個不存在的檔案。
Process Monitor,可以監控當前系統中所有進程的活動,包括對檔案系統的操作,讀寫註冊表,網路訪問以及線程活動等等,非常實用的調試維護工具。
我開啟這個工具,選擇監視進程為devenv.exe。在Visual Studio中F5開始調試,立即彈出出錯對話方塊,OK,把PM暫停一下,否則條目太多了。
但是事件條目還是太多了,所以我把Result為SUCCESS的條目過濾掉,因為我們只關注那些失敗的條目。
然後對日誌條目進行細緻的排查,終於發現了問題根源:
原來Visual Studio在調試或者啟動並執行時候會去讀取註冊表中的HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths\iexplore.exe項,然後讀取不到,因而才報那個錯誤。難怪提示Cannot locate Microsoft internet explorer呢。
我開啟regedit登錄編輯程式,找到這個路徑,然後把缺失的項加上去,重新回到Visual Studio中F5,終於可以了,內牛滿面~
希望我的解決方案能夠給你一些啟發,以後遇到類似莫名其妙的問題,可以想到使用PM這個工具去排查問題。