我们正在尝试在我们重写的 Mac OSX 上运行 C# Win Form 应用程序。在以前的版本中,所有与 win form 相关的东西都可以正常工作,但现在我们在 Mac 上得到了:
Unhandled Exception:
System.TypeInitializationException: An exception was thrown by the type initializer for System.Windows.Forms.WindowsFormsSynchronizationContext ---> System.TypeInitializationException: An exception was thrown by the type initializer for System.Windows.Forms.ThemeEngine ---> System.ArgumentException: The requested FontFamily could not be found [GDI+ status: FontFamilyNotFound]
at System.Drawing.GDIPlus.CheckStatus (Status status) [0x00000] in <filename unknown>:0
at System.Drawing.FontFamily..ctor (GenericFontFamilies genericFamily) [0x00000] in <filename unknown>:0
at (wrapper remoting-invoke-with-check) System.Drawing.FontFamily:.ctor (System.Drawing.Text.GenericFontFamilies)
at System.Drawing.FontFamily.get_GenericSansSerif () [0x00000] in <filename unknown>:0
at System.Drawing.Font.CreateFont (System.String familyName, Single emSize, FontStyle style, GraphicsUnit unit, Byte charSet, Boolean isVertical) [0x00000] in <filename unknown>:0
at System.Drawing.Font..ctor (System.String familyName, Single emSize, FontStyle style, GraphicsUnit unit, Byte gdiCharSet, Boolean gdiVerticalFont) [0x00000] in <filename unknown>:0
at System.Drawing.Font..ctor (System.String familyName, Single emSize, System.String systemName) [0x00000] in <filename unknown>:0
at (wrapper remoting-invoke-with-check) System.Drawing.Font:.ctor (string,single,string)
at System.Drawing.SystemFonts.get_DefaultFont () [0x00000] in <filename unknown>:0
at System.Windows.Forms.Theme..ctor () [0x00000] in <filename unknown>:0
at System.Windows.Forms.ThemeWin32Classic..ctor () [0x00000] in <filename unknown>:0
at System.Windows.Forms.ThemeVisualStyles..ctor () [0x00000] in <filename unknown>:0
at System.Windows.Forms.ThemeEngine..cctor () [0x00000] in <filename unknown>:0
--- End of inner exception stack trace ---
at System.Windows.Forms.SystemInformation.get_MenuAccessKeysUnderlined () [0x00000] in <filename unknown>:0
at System.Windows.Forms.Control..ctor () [0x00000] in <filename unknown>:0
at (wrapper remoting-invoke-with-check) System.Windows.Forms.Control:.ctor ()
at System.Windows.Forms.WindowsFormsSynchronizationContext..cctor () [0x00000] in <filename unknown>:0
--- End of inner exception stack trace ---
at System.Windows.Forms.Control..ctor () [0x00000] in <filename unknown>:0
at System.Windows.Forms.ScrollableControl..ctor () [0x00000] in <filename unknown>:0
at System.Windows.Forms.ContainerControl..ctor () [0x00000] in <filename unknown>:0
at System.Windows.Forms.Form..ctor () [0x00000] in <filename unknown>:0
at NewWorldStudio.StartupForm..ctor () [0x00000] in <filename unknown>:0
at (wrapper remoting-invoke-with-check) NewWorldStudio.StartupForm:.ctor ()
at NewWorldStudio.Program.Main () [0x00000] in <filename unknown>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.TypeInitializationException: An exception was thrown by the type initializer for System.Windows.Forms.WindowsFormsSynchronizationContext ---> System.TypeInitializationException: An exception was thrown by the type initializer for System.Windows.Forms.ThemeEngine ---> System.ArgumentException: The requested FontFamily could not be found [GDI+ status: FontFamilyNotFound]
at System.Drawing.GDIPlus.CheckStatus (Status status) [0x00000] in <filename unknown>:0
at System.Drawing.FontFamily..ctor (GenericFontFamilies genericFamily) [0x00000] in <filename unknown>:0
at (wrapper remoting-invoke-with-check) System.Drawing.FontFamily:.ctor (System.Drawing.Text.GenericFontFamilies)
at System.Drawing.FontFamily.get_GenericSansSerif () [0x00000] in <filename unknown>:0
at System.Drawing.Font.CreateFont (System.String familyName, Single emSize, FontStyle style, GraphicsUnit unit, Byte charSet, Boolean isVertical) [0x00000] in <filename unknown>:0
at System.Drawing.Font..ctor (System.String familyName, Single emSize, FontStyle style, GraphicsUnit unit, Byte gdiCharSet, Boolean gdiVerticalFont) [0x00000] in <filename unknown>:0
at System.Drawing.Font..ctor (System.String familyName, Single emSize, System.String systemName) [0x00000] in <filename unknown>:0
at (wrapper remoting-invoke-with-check) System.Drawing.Font:.ctor (string,single,string)
at System.Drawing.SystemFonts.get_DefaultFont () [0x00000] in <filename unknown>:0
at System.Windows.Forms.Theme..ctor () [0x00000] in <filename unknown>:0
at System.Windows.Forms.ThemeWin32Classic..ctor () [0x00000] in <filename unknown>:0
at System.Windows.Forms.ThemeVisualStyles..ctor () [0x00000] in <filename unknown>:0
at System.Windows.Forms.ThemeEngine..cctor () [0x00000] in <filename unknown>:0
--- End of inner exception stack trace ---
at System.Windows.Forms.SystemInformation.get_MenuAccessKeysUnderlined () [0x00000] in <filename unknown>:0
at System.Windows.Forms.Control..ctor () [0x00000] in <filename unknown>:0
at (wrapper remoting-invoke-with-check) System.Windows.Forms.Control:.ctor ()
at System.Windows.Forms.WindowsFormsSynchronizationContext..cctor () [0x00000] in <filename unknown>:0
--- End of inner exception stack trace ---
at System.Windows.Forms.Control..ctor () [0x00000] in <filename unknown>:0
at System.Windows.Forms.ScrollableControl..ctor () [0x00000] in <filename unknown>:0
at System.Windows.Forms.ContainerControl..ctor () [0x00000] in <filename unknown>:0
at System.Windows.Forms.Form..ctor () [0x00000] in <filename unknown>:0
at NewWorldStudio.StartupForm..ctor () [0x00000] in <filename unknown>:0
at (wrapper remoting-invoke-with-check) NewWorldStudio.StartupForm:.ctor ()
at NewWorldStudio.Program.Main () [0x00000] in <filename unknown>:0
在 Google 上很难找到解决方案。根据堆栈跟踪中的 get_GenericSansSerif 方法,它似乎与 GDI+ 和 Sans Serif 字体有关。