使用来自多台机器的 System.Drawing 包(多个 OS)

Using System.Drawing package from multiple machines (multiple OS)

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

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

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

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

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

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

上工作

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

如果您仍在使用 CoreCompat。System.Drawing(我维护),我建议您迁移到 System.Drawing。通用 - 这是 [=20= 的 Microsoft 实现] 对于 .NET Core。

如果问题在 Windows 上仍然重现,你最好的办法是复制一段可以用来重现你的问题的代码,这样我就可以看看它。