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. LinuxおよびMacOSプラットフォームでSystem.drawing.commonを実装することは、.NET6および.NET7では不可能です。

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

  3. .NET6では、System.Drawing.EnableUnixSupportランタイム構成をtrueに設定します。

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

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