.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的用法
更新于:4天前相关文章
- ASP.NET Core 2.1中的ActionResult<T>
- .NET Core 3.0创建一个单独的可执行文件
- 在ASP.NET Core 2.1中使用HttpClientFactory的3种方法
- .NET Core MVC应用程序创建教程
- .NET Core中的File和PhysicalFile
- .NET Core 读取配置文件方法
- .NET Core 管道模型中间件及管道模拟实现
- ASP.NET Core多环境配置
- .NET Core 日志配置,NLog配置示例
- ASP.NET Core主机和应用启动流程
- .NET Core SkiaSharp替代System.Drawing的用法
- .NET Core 3.X路由中间件和终结点中间件
- .Net报错Could not find a part of the path bin\roslyn\csc.exe
- IIS中.NET Core报错HTTP Error 500.31 - ANCM Failed to Find Native Dependencies
- .NET Core分部视图PartialView用法
- .NET Core 视图组件Component用法
- ASP.NET Core的三种部署方式
- .NET Core Razor Page ajax请求返回400 Bad request
- .NET Core上传文件报Access xxx.tmp is denied错误
- ASP.NET Core 使用Razor code blocks替代@helper