环境描述
开发环境:
Windows 11
Visual Studio 2022
.NET Framework 4.8
目标电脑环境
Windows10
默认包含了 .NET Framework 4.8
现象
编译好的WPF应用程序,是基于 .NET Framework 4.8开发的,在大部分电脑上可以正常使用。在某个客户机上使用时,打开软件只出现白屏,默认窗口的放大缩小、关闭按钮、以及拖拽都可以正常使用,但是客户区域内容为空白如下图所示。
排查过程
1.安装.NET Framework 4.8.1
❌问题未解决
2.使用驱动精灵更新显卡等驱动
❌问题未解决
3.在.NET Framework4.8编译WinFrom的测试软件,在目标电脑上使用
WinFrom的测试软件可以正常使用。
4.在.NET 6上编译WPF测试软件,并在目标电脑上安装对应的环境
❌测试软件打开也是空白的
5.在WPF测试软件上使用样式库FirstDraft中的FdWindow替换默认的Window作为窗口,编译后在目标电脑上使用
✔ 窗口显示正常
原因分析
1.客户电脑缺失某些与WPF窗口渲染的库
2.查看FirstDraft的源代码可以发现,FdWindow窗口是基于WindowResizer和user.dll实现的。可能和这个有关系。
解决办法
使用NuGet获取WeDraft.Toolkit.FirstDraft控件,并将项目中的窗口全部用FdWindow替换。
仓库地址:mefdeamon/Toolkit-WeDraft: Build our own WPF Control Style Library [First Draft] [FirstDraft] (github.com)
总结
1.虽然使用WeDraft.Toolkit.FirstDraft可以临时解决问题,但是没有找到问题的根本原因。
积跬步以至千里:) (:一阵没来由的风