我的WPF应用程序突然出现以下异常:
System.IO.FileFormatException:在匹配当前操作系统或更高版本的FontFamilyCollection中找不到FontFamily元素:Windows7SP1
我已经尝试了不同的操作系统,但只有在安装了Windows 7 SP1的计算机上会发生这种情况。
我的WPF应用程序突然出现以下异常:
System.IO.FileFormatException:在匹配当前操作系统或更高版本的FontFamilyCollection中找不到FontFamily元素:Windows7SP1
我已经尝试了不同的操作系统,但只有在安装了Windows 7 SP1的计算机上会发生这种情况。
由于我不被允许评论:
“user2250152”用户的回答是正确的。
@Lieven Keersmaekers的评论:
“fwiw - 安装KB4056894也会在启动Powershell ISE时触发此异常”:
我真的怀疑这一点。
我在8台机器上处理了这个“KB4055532”问题有两天了。但在安装了“KB4056894”之后,启动Powershell ISE没有出现任何问题。
这只是在安装“KB4055532”之后开始发生的。
卸载此“KB4055532”(但仍在机器上拥有“KB4056894”)可以解决与Powershell相关的问题。
顺便说一下:
以下网站上有提示(以及“修复”该问题的方法):
https://ngb.to/threads/32709-Microsoft-Patchday-Januar-2018-KB4055532-NET-Font-Probleme。
问题来自于一个“*.CompositeFont”文件,该文件被更新替换,然后缺少Windows 7的信息。 这使得基于WPF使用函数来确定FontFamily的程序失败/崩溃。
实际上,我非常确定只需要交换“GlobalUserInterface.CompositeFont”文件就可以临时修复此问题。
我在使用MarkdownPad2时遇到了这个错误。通过.NET Framework January 2018 Rollup Known Issue KB4074906 - "TypeInitializationException" or "FileFormatException" error in WPF applications(感谢@Boris!)提供的信息,我使用手动修复选项下载并替换了被Microsoft更新安装的损坏字体,问题得以解决。
异常信息如下:
The invocation of the constructor on type 'MarkdownPad2.UserControls.MarkdownEditor' that matches the specified binding constraints threw an exception.
---> System.TypeInitializationException: The type initializer for 'System.Windows.Media.Fonts' threw an exception.
---> System.IO.FileFormatException: No FontFamily element found in FontFamilyCollection that matches current OS or greater: Windows7SP1
在升级过程中破坏字体似乎是一个不可原谅的错误。显然,微软也同意这一点,因为他们在技术说明中加入了以下评论:
我们会在提供给您之前对所有更新进行广泛测试。我们正在调查我们测试中的差距,并将在下一个版本中解决该问题。