System.Drawing.Commonの代替(.NET 7および非Windows)
.NET 6 から、Microsoft は Linux および macOS での System.Drawing.Common のサポートを停止しました。 このライブラリは今後、Windows でのみ動作します。 詳細については、公式ドキュメントを参照してください。
"このプラットフォームでは System.Drawing.Common はサポートされていません"エラーを回避するための回避策
.NET 6
Windows 以外のオペレーティング システムでは、内部例外として TypeInitializationException がスローされ、 PlatformNotSupportedException がスローされます。 プラットフォームアナライザーは非Windowsプラットフォームに対してコンパイル時警告を発します。 以下のランタイム例外は、設定オプションを設定しない限りスローされます:
System.TypeInitializationException : 'Gdip' の型イニシャライザーが例外をスローしました。
---- System.PlatformNotSupportedException : 非Windowsプラットフォームでは System.Drawing.Common はサポートされていません。
.NET 6 の一時的な回避策:
Windows 以外のプラットフォームのサポートを有効にするには、runtimeconfig.json ファイルで System.Drawing.EnableUnixSupport ランタイム構成スイッチを true に設定します。
{
"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 をリリースしました。
詳細は 公式ドキュメントを参照してください。

