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. .NET 6 および .NET 7 の Linux および macOS プラットフォームでは、 System.Drawing.Commonを実装することはできません。
  2. "System.Drawing.Common はこのプラットフォームではサポートされていません"という例外メッセージが表示されます。
  3. .NET 6 の場合、 System.Drawing.EnableUnixSupportランタイム構成をtrueに設定します。
  4. .NET 7 でもサポートされなくなったことに注意してください。
  5. Iron Software.Drawingオープンソース ライブラリを使用して、.NET 7 のSystem.Drawing.Commonを置き換えます。

.NET 6 および .NET 7 では、Microsoft は Linux および macOS でのSystem.Drawing.Common のサポートを停止しました。 公式ドキュメントに従って、ライブラリは Windows プラットフォームでのみ動作します。

  • Windows 以外のオペレーティング システムでは、内部例外としてPlatformNotSupportedExceptionと共にTypeInitializationExceptionがスローされます。
  • .NET 6 では、 System.Drawing.Commonを参照するコードが Windows 以外のオペレーティング システム用にコンパイルされると、プラットフォーム アナライザーによってコンパイル時の警告が出力されます。 さらに、構成オプションが設定されていない場合、次のランタイム例外がスローされます。
System.TypeInitializationException : The type initializer for 'Gdip' threw an exception. --- System.PlatformNotSupportedException : System.Drawing.Common is not supported on non-Windows platforms.

.NET 6 での一時的な回避策:

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

{
  "runtimeOptions": {
    "configProperties": {
      "System.Drawing.EnableUnixSupport": true
    }
  }
}

プログラムで Unix サポートを有効にするには、コードの先頭に次のコードを追加します。

// Enables Unix support for System.Drawing in .NET 6. This setting is ignored in .NET 7.
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);
// Enables Unix support for System.Drawing in .NET 6. This setting is ignored in .NET 7.
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);
' Enables Unix support for System.Drawing in .NET 6. This setting is ignored in .NET 7.
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", True)
$vbLabelText   $csharpLabel

.NET 7

.NET 7 のリリースにより、Microsoft は回避策を削除し、Linux および macOS 上のSystem.Drawing.Commonのサポートを完全に削除しました。

Iron Software は、 System.Drawing.Commonのオープンソース代替品であるIronSoftware.Drawingをリリースしました。 NuGetGitHubで見つけることができます。

詳細については、ドキュメントページをご覧ください: Iron Software Drawing Documentation

カーティス・チャウ
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

準備はできましたか?
Nuget ダウンロード 5,167,857 | Version: 2025.11 リリース