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

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

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

  1. System.drawing.common**の実装は、.NET6と.NET7のLinuxとMacOSプラットフォームではできません。

  2. このプラットフォームではsystem.drawing.commonはサポートされていませんの例外メッセージを取得する。

  3. .NET6のSystem.Drawing.EnableUnixSupportランタイム設定をtrueに設定する。

  4. .NET7でもサポート終了

  5. 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/