首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我在Linux上使用.NET Core和C#,并且缺少库*System.Drawing*

我在Linux上使用.NET Core和C#,并且缺少库*System.Drawing*
EN

Stack Overflow用户
提问于 2017-06-08 06:40:37
回答 5查看 21.1K关注 0票数 9

错误消息

Program.cs(1,14):错误CS0234:命名空间'System‘中不存在类型或名称空间名称’绘图‘(您缺少程序集引用吗?)

能解决这个问题吗?或者,如果我使用C#在Linux上开发,那么我就不应该使用这个库了?

EN

回答 5

Stack Overflow用户

发布于 2017-06-08 06:44:24

2021年:

来自https://learn.microsoft.com/en-us/dotnet/core/compatibility/core-libraries/6.0/system-drawing-common-windows-only#recommended-action的报价

要将这些API用于跨平台应用程序,请迁移到以下库之一:

  • ImageSharp
  • SkiaSharp
  • Microsoft.Maui.Graphics

您可以在短期内使用System.Drawing,但要知道没有支持。

或者,您可以通过在System.Drawing.EnableUnixSupport文件中将runtimeconfig.json运行时配置开关设置为true来启用对非Windows平台的支持:添加此配置开关是为了使跨平台应用程序在很大程度上依赖于这个包的时间来迁移到更现代的库。然而,非Windows错误将不会被修复。此外,我们可能在将来的版本中完全删除对非Windows平台的支持,即使您使用运行时配置开关启用它。

为了能够在Linux机器上使用System.Drawing,您可能还需要安装@saman和@alex中提到的libgdiplus

2017年:

System.Drawing名称空间目前并不是corefx的一部分,因为它依赖于来自GDI+的GDI+特性。

但在那里有计划吗将在未来支持它。

但有多种选择:

CoreCompat.System.Drawing

CoreCompat.System.Drawing是System.Drawing的Mono实现的.NET核心端口。与System.Drawing中的.NET框架和Mono中的CoreCompat.System.Drawing一样,CoreCompat.System.Drawing也依赖于Windows上的GDI+。因此,出于同样的理由,应谨慎行事。

ImageSharp

ImageSharp是一个全新的纯托管代码和跨平台的图像处理库.它的性能不如依赖本机OS特定依赖的库的性能好,但它仍然非常合理。它唯一的依赖是.NET本身,这使得它非常可移植:没有需要安装的附加包,只需引用ImageSharp本身,您就完成了。

Magick.NET

Magick.NET是流行的ImageMagick库的.NET包装器。ImageMagick是一个开源的跨平台库,主要关注图像质量,并提供非常广泛的受支持的图像格式。它还支持与ImageSharp相同的EXIF。

( .NET核心构建的Magick.NET目前只支持Magick.NET。)

SkiaSharp

SkiaSharp是Google的Skia跨平台2D图形库的.NET包装器,由Xamarin团队维护。SkiaSharp现在与.NET内核兼容,而且速度非常快。

FreeImage-dotnet-核心

这个库对于本机FreeImage库来说,就像Magick.NET对于ImageMagick:.NET核心包装器一样。它提供了一个很好的选择图像格式,良好的性能,良好的视觉质量。

这里是上述库的一些很好的示例和性能分析。

票数 9
EN

Stack Overflow用户

发布于 2021-09-18 12:09:52

在命令行上运行以下命令

代码语言:javascript
运行
复制
sudo apt-get install libgdiplus

代码语言:javascript
运行
复制
sudo yum install -y libgdiplus-2.10-9.el7.x86_64
票数 5
EN

Stack Overflow用户

发布于 2021-04-14 07:36:22

微软从那时起就发布了System.Drawing.Common,它也在Linux上工作。

他们决定在.NET 6中“只使用libgdiplus”,这个包将显示编译警告,因为它依赖于某些Linux发行版中可能不存在的libgdiplus。见https://learn.microsoft.com/en-us/dotnet/core/compatibility/core-libraries/6.0/system-drawing-common-windows-only

我们切换到ImageSharp,因为它是唯一的图像处理库,它是纯托管代码,没有任何非托管依赖(不像SkiaSharp或MagickNET)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44428405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档