.NET Core中使用System.Drawing处理图像
将.NET Framework的代码迁移到.NET Core的时候发现System.Drawing命名空间下的代码编译会报错。从官网查看到需要安装System.Drawing.Common包,我安装的时候最新版本是6.0.0。
安装完成后原来的代码可以正常编译了。但是会有下划线警告,提示: warning CA1416: This call site is reachable on all platforms. 'Image.FromStream(Stream)' is only supported on: 'windows'.
根据官方文档来看,System.Drawing.Common NuGet 包现在被归为 Windows 特定的库。 在为非 Windows 操作系统编译时,平台分析器会在编译时发出警告。
在.NET 6中,由于 System.Drawing.Common 被设计为 Windows 技术的精简包装器,因此其跨平台实现欠佳。
微软官方提供了建议的操作:
若要将这些 API 用于跨平台应用,请迁移到以下库之一:
SkiaSharp
Microsoft.Maui.Graphics
或者,可通过将 runtimeconfig.json文件中的System.Drawing.EnableUnixSupport运行时配置开关设置为 true 来启用对.NET 6中非Windows 平台的支持:
runtimeconfig.template.json 模板文件:
{
"configProperties":
{
"System.Drawing.EnableUnixSupport": true
}
}
[appname].runtimeconfig.json 输出文件:
{
"runtimeOptions":
{
"configProperties":
{
"System.Drawing.EnableUnixSupport": true
}
}
}
备注:
添加此配置开关是为了让严重依赖此包的跨平台应用有时间迁移到更新式的库。 但是,不会修复非 Windows bug。
此开关仅在 .NET 6 中可用。
关联文章:.NET Core SkiaSharp替代System.Drawing的用法
更新于:2个月前相关文章
- ASP.NET如何将Views文件夹从项目分离
- .NET C# 读取编辑.AVIF图片文件
- .NET C# SkiaSharp读取.AVIF图片文件报错
- .NET开源ORM FreeSql常见问题和解决方法
- 微软于发布了.NET 9 Release Candidate 2 提高整体质量
- 分享5个开源的.NET Excel读写操作库
- .Net Core中Dapper的使用详解
- ASP.NET 使用Entity Framework (EF) 创建迁移修改SQLite数据库表结构
- 如何从.NET Framework迁移到.NET Core或.NET 6/7?
- 如何优化ASP.NET Core应用的性能?
- 10款.NET开发中推荐的代码分析和质量工具
- .NET9 Blazor有哪些更新?
- 在Docker、Kubernetes环境下部署.NET应用的最佳实践
- .NET 游戏开发框架有哪些?
- PluginCore 基于 ASP.NET Core 的轻量级插件框架
- .NET C# EntityFramework(EF)连接SQLite代码示例
- Sylvan.Data.Excel 性能优异的开源.NET Excel数据读取库
- ASP.NET Core 中常用的内置中间件
- .NET9 F#有什么新特性?
- .NET 开源 ORM FreeSql 使用教程