我正在尝试在面向 .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": {
}
}
}
问题是什么?
我知道这很旧,但是现在图书馆有一个端口叫
System.Drawing.Common
。尝试使用 NuGet 安装那个。
为了使这成为可能,有一个名为
Windows Compatibility Pack
的元包。然而,这个元包包括很多很多与 Windows 相关的 API(作为包分发)。
来源:https://developers.de/2018/01/22/how-to-use-system-drawing-in-net-core/
添加 NuGet 参考
Microsoft.Windows.Compatibility
.
注意:标记“包括预发布”
当然,它只有在预发布包适合你的情况下才有效。
System.Drawing
不是 ASP.NET 的好选择.
如果你想要图形操作,我建议使用 .NET Core 上的 ImageSharp 或 .NET Framework 上的 ImageProcessor / ImageResizer。
此外,如果您确实需要使用
System.Drawing
,请将project.json文件中的框架更改为netstandard1.6
并添加依赖项"NETStandard.Library": "1.6.1"
.
当你只想在 .NET Full Framework 上使用 ASP.NET Core 时,你可以像这样引用旧的类库:
{
"version": "1.0.0-*",
"frameworks": {
"net452": {
"dependencies": {
},
"frameworkAssemblies": {
"System.Drawing": "4.0.0.0",
}
}
}
}
我能够用一个名为 SkiaSharp 的多平台库替换 System.Drawing。
如果你在Linux上运行,你也可以安装这个NuGet包,这样你就不必手动安装依赖项了。
对于 .NET 6 核心:
install Aspose.Drawing.Common