System.Drawing.Commonの代替(.NET 7および非Windows)。
"System.Drawing.Common はこのプラットフォームではサポートされていません"を回避するための回避策
- .NET 6 および .NET 7 の Linux および macOS プラットフォームでは、 System.Drawing.Commonを実装することはできません。
- "System.Drawing.Common はこのプラットフォームではサポートされていません"という例外メッセージが表示されます。
- .NET 6 の場合、 System.Drawing.EnableUnixSupportランタイム構成をtrueに設定します。
- .NET 7 でもサポートされなくなったことに注意してください。
- 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);.NET 7
.NET 7 のリリースにより、Microsoft は回避策を削除し、Linux および macOS 上のSystem.Drawing.Commonのサポートを完全に削除しました。
Iron Software は、 System.Drawing.Commonのオープンソース代替品であるIronSoftware.Drawingをリリースしました。 NuGetとGitHubで見つけることができます。
詳細については、ドキュメントページをご覧ください: Iron Software Drawing Documentation






