2017-11-06 10 views
0

System.Drawingパッケージを使用する.Net Core 2.0 C#Webアプリケーションを構築しています。複数のマシンからSystem.Drawingパッケージを使用する(複数OS)

私はMacでコードを書いていますが、Windowsマシンでも開発され、Linuxサーバーにデプロイされます。

OSXでSystem.Drawingを使用するには、runtime.osx.10.10-x64.CoreCompat.System.Drawing Nugetパッケージをプロジェクトの依存関係に追加する必要がありました。

しかし、このコードはWindowsマシンでは動作しません。 Graphics(System.Drawingの一部)オブジェクトのDrawStringメソッドを使用しようとすると、System.AccessViolationExceptionが発生します。

私の質問はこれを解決する一般的な方法は何ですか? このmulti-os設定でSystem.Drawingクラスを使用することは可能ですか?

答えて

2

同じSystem.Drawingコードは、Linux、Windows、およびMacOS上で何も変更することなく動作するはずです。 Macで動作するには、libgdiplus(例えばbrew install mono-libgdiplus経由)またはruntime.osx.10.10-x64.CoreCompat.System.DrawingのSystem.Drawingを手動でインストールする必要があります。

System.Drawingは外部依存関係のないWindowsで動作します。

CoreCompat.System.Drawing(私が管理している)を使用している場合は、代わりにSystem.Drawing.Commonに移行することをお勧めします。これは.NET実装のSystem.DrawingのMicrosoft実装です。

Windowsで問題が再現される場合は、問題を再現するために使用できるコードをコピーする必要があります。そのため、私はそれを見ることができます。

関連する問題