System.Drawing.Common の代替手段 (.NET 7 & 非Windows)

This article was translated from English: Does it need improvement?
Translated
View the article in English

.NET6から、MicrosoftはLinuxおよびmacOSでSystem.Drawing.Commonのサポートを停止しました。 このライブラリは現在、Windowsでのみ動作します。 詳細については、こちらをご参照ください 公式ドキュメント.

このプラットフォームでは system.drawing.common がサポートされていない場合の回避策

.NET6

非Windowsオペレーティングシステムでは、内部例外としてPlatformNotSupportedExceptionを持つTypeInitializationExceptionがスローされます。 プラットフォームアナライザーは、Windows以外のプラットフォームに対してコンパイル時警告を発します。 次のランタイム例外が設定オプションを設定しない限りスローされます:

System.TypeInitializationException : The type initializer for 'Gdip' threw an exception.

    ---- System.PlatformNotSupportedException : System.Drawing.Common is not supported on non-Windows platforms.

.NET6での一時的な回避策:

runtimeconfig.jsonファイルでSystem.Drawing.EnableUnixSupportランタイム構成スイッチをtrueに設定することで、非Windowsプラットフォームのサポートを有効にします。

{

    "runtimeOptions": {

        "configProperties": {

            "System.Drawing.EnableUnixSupport": true

        }

    }

}

次のコードをあなたのコードの先頭に追加します:

System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);

.NET7以上

.NET7から、MicrosoftはLinuxおよびmacOS上でのSystem.Drawing.Commonのサポートを完全に廃止しました。これには以前利用可能だった回避策も含まれます。

Iron Softwareは、System.Drawing.Commonのオープンソース代替であるIronSoftware.Drawingをリリースしました。