.NET Core 和 System.Drawing

问题描述 投票:0回答:6

我正在尝试在面向 .NET 4.6 的 .NET Core 控制台应用程序中引用 System.Drawing,但程序集不存在。

根据 Microsoft 的说法,如果您使用 .NET Core,则 System.Drawing 不可用。但如果你引用了完整的 .NET 框架,你应该可以使用它。

这是我的project.json文件:

{
  "version": "1.0.0-*",
  "buildOptions": {
    "emitEntryPoint": true
  },

    "dependencies": {

    },

  "frameworks": {
    "net46": {
    }
  }
}

问题是什么?

c# .net asp.net-core .net-core
6个回答
28
投票

我知道这很旧,但是现在图书馆有一个端口叫

System.Drawing.Common
。尝试使用 NuGet 安装那个。

为了使这成为可能,有一个名为

Windows Compatibility Pack
的元包。然而,这个元包包括很多很多与 Windows 相关的 API(作为包分发)。

来源:https://developers.de/2018/01/22/how-to-use-system-drawing-in-net-core/


27
投票

添加 NuGet 参考

Microsoft.Windows.Compatibility
.

注意:标记“包括预发布”

当然,它只有在预发布包适合你的情况下才有效。


20
投票

System.Drawing
不是 ASP.NET 的好选择.

如果你想要图形操作,我建议使用 .NET Core 上的 ImageSharp 或 .NET Framework 上的 ImageProcessor / ImageResizer

此外,如果您确实需要使用

System.Drawing
,请将project.json文件中的框架更改为
netstandard1.6
并添加依赖项
"NETStandard.Library": "1.6.1"
.


4
投票

当你只想在 .NET Full Framework 上使用 ASP.NET Core 时,你可以像这样引用旧的类库:

{
  "version": "1.0.0-*",

  "frameworks": {
    "net452": {
      "dependencies": {
      },
      "frameworkAssemblies": {
        "System.Drawing": "4.0.0.0",
      }
    }
  }
}

0
投票

我能够用一个名为 SkiaSharp 的多平台库替换 System.Drawing

如果你在Linux上运行,你也可以安装这个NuGet包,这样你就不必手动安装依赖项了。


0
投票

对于 .NET 6 核心:

install Aspose.Drawing.Common
© www.soinside.com 2019 - 2024. All rights reserved.