System.Drawing.Common の代替手段 (.NET 7 & 非Windows)
このプラットフォームでは system.drawing.common がサポートされていない場合の回避策
-
System.drawing.common**の実装は、.NET6と.NET7のLinuxとMacOSプラットフォームではできません。
-
このプラットフォームではsystem.drawing.commonはサポートされていませんの例外メッセージを取得する。
-
.NET6のSystem.Drawing.EnableUnixSupportランタイム設定をtrueに設定する。
-
.NET7でもサポート終了
-
NET7のSystem.Drawing.Commonを置き換えるために、IronSoftware.Drawingオープンソースライブラリを使用する。
.NET6と.NET7では、マイクロソフトは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/