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 の一時的な回避策:
System.Drawing.EnableUnixSupport ファイル内で true ランタイム構成スイッチを runtimeconfig.json に設定することで、Windows 以外のプラットフォームへの対応を有効にします:
{
"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"をリリースしました。
詳細は 公式ドキュメントを参照してください。

