其他分享
首页 > 其他分享> > .NET 6 使用 System.Drawing.Common 出现 The type initializer for ‘Gdip’ threw an exception 异常的解决办法

.NET 6 使用 System.Drawing.Common 出现 The type initializer for ‘Gdip’ threw an exception 异常的解决办法

作者:互联网

出现问题的原因

在Linux环境部署.NET Core程序时,如果要到System.Drawing.Common引用会出现该问题,目前大量的第三方组件使用该Windows专用库,尤其是涉及图片处理、Word相关的组件、二维码等

 

问题现象

出现相关Gdip异常,安装相应组件后重启项目及服务器无效,异常如下

The type initializer for 'Gdip' threw an exception.  at System.Drawing.SafeNativeMethods.Gdip.GdipGetGenericFontFamilySansSerif(IntPtr& fontfamily)    at System.Drawing.FontFamily.GetGdipGenericSansSerif()    at System.Drawing.FontFamily.get_GenericSansSerif()    at System.Drawing.Font.CreateFont(String familyName, Single emSize, FontStyle style, GraphicsUnit unit, Byte charSet, Boolean isVertical)    at System.Drawing.Font..ctor(String familyName, Single emSize, FontStyle style, GraphicsUnit unit, Byte gdiCharSet, Boolean gdiVerticalFont)    at OfficeOpenXml.ExcelRangeBase.AutoFitColumns(Double MinimumWidth, Double MaximumWidth)    at OfficeOpenXml.ExcelRangeBase.AutoFitColumns(Double MinimumWidth)    at OfficeOpenXml.ExcelRangeBase.AutoFitColumns()    at Magicodes.ExporterAndImporter.Excel.Utility.ExportHelper`1.AddHeaderAndStyles()    at Magicodes.ExporterAndImporter.Excel.Utility.ExportHelper`1.Export(ICollection`1 dataItems)    at Magicodes.ExporterAndImporter.Excel.ExcelExporter.ExportAsByteArray[T](ICollection`1 dataItems)

 

解决办法


.NET 6之前

在Linux服务器上安装 libgdiplus 即可解决

libgdiplusSystem.Drawing.Common原生端跨平台实现的主要提供者,是开源mono项目

安装步骤(以Centos 7为例)

标签:libgdiplus,System,Drawing,Magicodes,NET,type,Gdip
来源: https://www.cnblogs.com/chinasoft/p/15985334.html