System.Drawing.Common の代替手段 (.NET 7 & 非Windows)
このプラットフォームでは system.drawing.common がサポートされていない場合の回避策
-
LinuxおよびMacOSプラットフォームでSystem.drawing.commonを実装することは、.NET6および.NET7では不可能です。
-
system.drawing.commonはこのプラットフォームでサポートされていませんの例外メッセージを取得します
-
.NET6では、System.Drawing.EnableUnixSupportランタイム構成をtrueに設定します。
-
.NET7でもサポート終了
-
NET7でSystem.Drawing.Commonを置き換えるために、IronSoftware.Drawingオープンソースライブラリを使用します。
.NET6および.NET7では、MicrosoftはLinuxおよびMacOSのサポートを終了し、System.Drawing.CommonはWindowsでのみ機能します。
- Windows以外のオペレーティング・システムでは、PlatformNotSupportedExceptionを内部例外とするTypeInitializationException例外がスローされる。
- .NET 6では、コードが非Windowsオペレーティングシステム向けにコンパイルされる際に、プラットフォームアナライザーがコンパイル時の警告を発します。 さらに、設定オプションを設定しない限り、次の実行時例外がスローされます:
System.TypeInitializationException : The type initializer for 'Gdip' threw an exception.---- System.PlatformNotSupportedException : System.Drawing.Common is not supported on non-Windows platforms.
.NET6での一時的な回避策:
次の方法で非Windowsプラットフォームのサポートを有効にします。runtimeconfig.jsonファイルでSystem.Drawing.EnableUnixSupportランタイム構成スイッチをtrueに設定します。
{ "runtimeOptions": { "configProperties": { "System.Drawing.EnableUnixSupport": true } }}
次のコードをあなたのコードの先頭に追加します:
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);
.NET7
.NET7のリリースで、マイクロソフトはこの回避策を廃止し、LinuxとMacOsのSystem.Drawing.Commonのサポートを完全に削除した。
Iron Softwareは、System.Drawing.Commonに代わるオープンソースのIronSoftware.Drawing.Commonをリリースした。 [NuGet] [GitHub]
詳細はこちらをご覧ください: https://ironsoftware.com/open-source/csharp/drawing/docs/