問題描述
一個WPF應用(已知依賴有.Net Framework4.8,二次開發軟件本體),滿足上述兩個依賴后,在兩台同事的Win10筆記上測試正常,在客戶的一台Win10筆記本上無法啟動。
具體症狀就是無症狀,雙擊、管理員運行都沒反應。
爬坑之路
- 中文路徑問題?
我首先注意到,同事解壓軟件時使用了中文命名,於是拷貝到英文路徑下,測試沒有效果❌ - .Net Framework的問題?
同事聯系我時,已說明安裝.net framework時已經提示已安裝,所以開始我也沒報太大的希望,為了驗證一遍,剛好,軟件除了WPF主應用外,還有一個輔助工具應用程序。
依賴同樣的.Net Framework框架,於是命令行啟動輔助工具,成功運行,至此.Net Framework環境問題被排除❌ - 打印日志,看卡在哪一步?
通過在App.Main方法中逐行加了Log,然而,運行程序Log文件並沒有被創建出來,意味着程序好像在App.Main之前就掛掉了❌
自我懷疑
作為剛入職的新兵蛋子,自己的前期任務遇到這種情況,心里還是挺着急的,死馬當活馬醫。
背水一戰
牽出Google這條🐶。
依次搜了:
- wpf can't reach app main❌
- wpf start failed❌
- wpf 沒反應❌
- wpf no response❌
- wpf click no response❌
- wpf application launch no response❌
- WPF application does not start✅
在Stack Overflow看到了這個解決方案
- Right click your application and choose properties.
- In the application tab change the output type to Console application.
- Build your application in debug mode.
- Start your application again.
新打包的程序在CMD里運行,終於不是沒反應了😭,打印出了異常:
System.Windows.Markup.XamlParseException: 'CefSharp.Wpf.ChromiumWebBrowser' threw exception. Inner Exception: could not load CefSharp.Core.Runtime.dll
接下來就是循環搜索的過程,最終確定問題是用戶電腦VC++依賴的缺失,裝上了Microsoft Visual C++ Redistributable Latest Supported之后,WPF應用順利啟動了。
復盤
有所收獲,至少以后對於WPF程序啟動不了的情況,不用對着圖標點來點去,無能狂怒了🙃。