.NET Core 2项目引用System.Drawing类库加载FontStyle类型失败求助
这个问题我之前碰到过类似的情况,根源在于**.NET Core 2.x并不自带传统.NET Framework中的System.Drawing程序集**——它是Windows专属的组件,而早期.NET Core是为跨平台设计的,默认不包含这类依赖。当你的类库依赖了.NET Framework的System.Drawing,在.NET Core 2环境下运行就会找不到System.Drawing.FontStyle这类类型,抛出TypeLoadException。
给你几个可行的解决步骤:
安装官方兼容NuGet包
System.Drawing.Common
微软专门为.NET Core/.NET 5+提供了兼容的System.Drawing.Common包,它实现了和传统System.Drawing一致的API。- 操作方式:打开你的.NET Core 2 Web应用的NuGet包管理器,搜索并安装
System.Drawing.Common(注意要选支持.NET Core 2.x的版本,比如4.7.0,更高版本可能不再兼容Core 2)。 - 命令行执行的话:
# NuGet包管理器控制台 Install-Package System.Drawing.Common -Version 4.7.0 # 或者dotnet CLI dotnet add package System.Drawing.Common --version 4.7.0
- 操作方式:打开你的.NET Core 2 Web应用的NuGet包管理器,搜索并安装
调整类库的依赖与目标框架
如果你的图形类库是基于.NET Framework开发的,建议把它迁移到**.NET Standard 2.0**(.NET Core 2.x完全支持这个标准),然后让类库也引用System.Drawing.Common包,这样类库和Web应用就能在同一依赖体系下运行,避免跨框架的引用冲突。非Windows部署的额外配置(如果需要)
如果你打算把应用部署到Linux或macOS环境,System.Drawing.Common依赖于libgdiplus库,需要先安装:- Debian/Ubuntu系统:
sudo apt-get install libgdiplus - macOS系统:
brew install mono-libgdiplus
如果只在Windows上运行,这一步可以跳过。
- Debian/Ubuntu系统:
最后再检查一下:确保你的Web应用项目文件(.csproj)里没有直接引用.NET Framework版本的System.Drawing程序集,清理解决方案后重新生成,应该就能解决这个类型加载异常了。
内容的提问来源于stack exchange,提问作者kotlvit




