You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

.NET Core 2项目引用System.Drawing类库加载FontStyle类型失败求助

解决.NET Core 2 Web应用中System.Drawing.FontStyle的TypeLoadException问题

这个问题我之前碰到过类似的情况,根源在于**.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 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上运行,这一步可以跳过。

最后再检查一下:确保你的Web应用项目文件(.csproj)里没有直接引用.NET Framework版本的System.Drawing程序集,清理解决方案后重新生成,应该就能解决这个类型加载异常了。

内容的提问来源于stack exchange,提问作者kotlvit

火山引擎 最新活动