System.Drawing.Commonの代替(.NET 7および非Windows)
.NET 6 から、Microsoft は Linux および macOS での System.Drawing.Common のサポートを停止しました。 このライブラリは今後、Windows でのみ動作します。 詳細については、公式ドキュメントを参照してください。
"このプラットフォームでは System.Drawing.Common はサポートされていません"エラーを回避するための回避策
.NET 6
非Windowsオペレーティングシステムでは、PlatformNotSupportedExceptionを内部例外としてスローされます。 プラットフォームアナライザーは非Windowsプラットフォームに対してコンパイル時警告を発します。 以下のランタイム例外は、設定オプションを設定しない限りスローされます:
System.TypeInitializationException : 'Gdip' の型イニシャライザーが例外をスローしました。
---- System.PlatformNotSupportedException : 非Windowsプラットフォームでは System.Drawing.Common はサポートされていません。
.NET 6 の一時的な回避策:
非Windowsプラットフォームのサポートを有効にするには、System.Drawing.EnableUnixSupport ランタイム設定スイッチをruntimeconfig.jsonファイルに設定します。
{
"runtimeOptions": {
"configProperties": {
"System.Drawing.EnableUnixSupport": true
}
}
}
さらに、設定をプログラムで有効にするためにコードの始めに以下の行を追加します:
// Enable System.Drawing.Common support on non-Windows platforms in .NET 6
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);
// Enable System.Drawing.Common support on non-Windows platforms in .NET 6
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);
' Enable System.Drawing.Common support on non-Windows platforms in .NET 6
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", True)
.NET 7 およびそれ以降
.NET 7以降、MicrosoftはLinuxおよびmacOSでのSystem.Drawing.Commonのサポートを完全に削除し、以前利用可能だった回避策も含まれます。
Iron Softwareは、System.Drawing.Commonのオープンソースの代替となるIronSoftware.Drawingをリリースしました。
詳細は 公式ドキュメントを参照してください。

