【问题标题】:Using System.Drawing package from multiple machines (multiple OS)从多台机器(多操作系统)使用 System.Drawing 包
【发布时间】:2017-11-06 12:36:48
【问题描述】:

我们正在构建一个使用 System.Drawing 包的 .Net Core 2.0 C# Web 应用程序。

我在 Mac 上写代码,但它也会在 Windows 机器上开发,并部署到 Linux 服务器上。

要在 OSX 上使用 System.Drawing,我必须将 runtime.osx.10.10-x64.CoreCompat.System.Drawing Nuget 包添加到我的项目依赖项中。

但该代码现在不能在 Window 机器上运行。 我们在尝试使用 Graphics(System.Drawing 的一部分)对象的 DrawString 方法时得到 System.AccessViolationException。

那么,我的问题是解决这个问题的常用方法是什么? 甚至可以在这个多操作系统设置中使用 System.Drawing 类吗?

【问题讨论】:

  • 您好,想知道您是如何设法在 Linux 上运行的?我正在使用System.Drawing.Commonruntime.osx.10.10-x64.CoreCompat.System.Drawing。您是否需要其他 Linux 依赖项?

标签: c# .net-core system.drawing multiplatform


【解决方案1】:

相同的 System.Drawing 代码无需任何更改即可在 Linux、Windows 和 macOS 上运行。您是正确的,您需要手动安装 libgdiplus(例如通过 brew install mono-libgdiplus)或参考 runtime.osx.10.10-x64.CoreCompat.System.Drawing 以便 System.Drawing 在 Mac 上工作。

System.Drawing 将在 Windows 上运行,无需任何外部依赖。

如果您仍在使用 CoreCompat.System.Drawing(我维护),我建议您改为迁移到 System.Drawing.Common - 这是 Microsoft 为 .NET Core 实现的 System.Drawing。

如果问题仍然在 Windows 上重现,最好的办法是复制一段可用于重现您的问题的代码,以便我查看。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 2014-05-27
    • 1970-01-01
    • 2016-06-29
    • 2021-05-19
    • 1970-01-01
    相关资源
    最近更新 更多