使用来自多台机器的 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 上仍然重现,你最好的办法是复制一段可以用来重现你的问题的代码,这样我就可以看看它。
我们正在构建一个使用 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 上仍然重现,你最好的办法是复制一段可以用来重现你的问题的代码,这样我就可以看看它。