在FontFamilyCollection中找不到FontFamily元素

时间:2018-01-11 12:08:32

标签: wpf

我的WPF应用程序突然失败,但出现以下异常:

  

System.IO.FileFormatException:找不到FontFamily元素   与当前操作系统或更高版本匹配的FontFamilyCollection:Windows7SP1

我尝试过不同的操作系统,但它只发生在带有SP1的Windows 7上。

4 个答案:

答案 0 :(得分:5)

我发现该异常已连接到最新的安全更新KB4055532。在Windows 7 SP1上卸载此更新时,问题就会消失。

答案 1 :(得分:5)

Microsoft在此发布了有关此问题的官方声明(包括解决方法): https://github.com/dotnet/announcements/issues/53

答案 2 :(得分:1)

由于我不被评论:
回答'user2250152'是正确的。
@Lieven Keersmaekers的评论:
'fwiw - 在启动Powershell ISE时安装KB4056894也会触发此异常:
我真的很怀疑这一点 我现在在所有8台机器中处理这个'KB4055532'问题2天了。但是在安装了“KB4056894”后,启动Powershell ISE没有任何问题 这只是在安装'KB4055532'之后才开始发生的 卸载这个'KB4055532'(但机器上仍然有'KB4056894')解决了Powershell的问题。
BTW: 以下网站上有一个提示(以及“修复”问题的方法): https://ngb.to/threads/32709-Microsoft-Patchday-Januar-2018-KB4055532-NET-Font-Probleme。 问题来自'* .CompositeFont'文件,该文件被更新取代,然后缺少Windows 7的信息。这使得基于WPF的程序使用函数来确定FontFamily失败/崩溃。
实际上,我很确定只有文件'GlobalUserInterface.CompositeFont'必须交换才能暂时解决这个问题。

答案 3 :(得分:0)

我用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

升级过程中破坏字体似乎是一个不可原谅的错误。显然微软同意,因为他们用这个评论结束了技术说明:

  

所有更新在提供给您之前都经过了广泛测试。我们正在调查测试中的差距,并将在下一版本中解决这个问题。