记一次WPF应用在用户电脑无法启动

  • A+
所属分类:.NET技术
摘要

一个WPF应用(已知依赖有.Net Framework4.8,二次开发软件本体),满足上述两个依赖后,在两台同事的Win10笔记上测试正常,在客户的一台Win10笔记本上无法启动。
具体症状就是无症状,双击、管理员运行都没反应。


问题描述

一个WPF应用(已知依赖有.Net Framework4.8,二次开发软件本体),满足上述两个依赖后,在两台同事的Win10笔记上测试正常,在客户的一台Win10笔记本上无法启动。
具体症状就是无症状,双击、管理员运行都没反应。

爬坑之路

  1. 中文路径问题?
    我首先注意到,同事解压软件时使用了中文命名,于是拷贝到英文路径下,测试没有效果❌
  2. .Net Framework的问题?
    同事联系我时,已说明安装.net framework时已经提示已安装,所以开始我也没报太大的希望,为了验证一遍,刚好,软件除了WPF主应用外,还有一个辅助工具应用程序。
    依赖同样的.Net Framework框架,于是命令行启动辅助工具,成功运行,至此.Net Framework环境问题被排除❌
  3. 打印日志,看卡在哪一步?
    通过在App.Main方法中逐行加了Log,然而,运行程序Log文件并没有被创建出来,意味着程序好像在App.Main之前就挂掉了❌

自我怀疑

作为刚入职的新兵蛋子,自己的前期任务遇到这种情况,心里还是挺着急的,死马当活马医。

背水一战

牵出Google这条?。
依次搜了:

在Stack Overflow看到了这个解决方案

https://stackoverflow.com/a/69661724

  • 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程序启动不了的情况,不用对着图标点来点去,无能狂怒了?。