System.Drawing.Common の代替手段 (.NET 7 & 非Windows)
.NET6から、MicrosoftはLinuxおよびmacOSでSystem.Drawing.Commonのサポートを停止しました。 このライブラリは現在、Windowsでのみ動作します。 詳細については、公式ドキュメントをご参照ください。
このプラットフォームでは system.drawing.common がサポートされていない場合の回避策
#.NET6
非Windowsオペレーティングシステムでは、TypeInitializationException
がスローされ、内部例外として PlatformNotSupportedException
が含まれます。 プラットフォームアナライザーは、Windows以外のプラットフォームに対してコンパイル時警告を発します。 次のランタイム例外が設定オプションを設定しない限りスローされます:
System.TypeInitializationException : The type initializer for 'Gdip' threw an exception.
---- System.PlatformNotSupportedException : System.Drawing.Common is not supported on non-Windows platforms.
.NET6での一時的な回避策:
非Windowsプラットフォームのサポートを有効にするには、runtimeconfig.json
ファイルでSystem.Drawing.EnableUnixSupport
ランタイム構成スイッチをtrue
に設定します。
{
"runtimeOptions": {
"configProperties": {
"System.Drawing.EnableUnixSupport": true
}
}
}
次のコードをあなたのコードの先頭に追加します:
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);
.NET7以上
.NET7から、MicrosoftはLinuxおよびmacOSでのSystem.Drawing.Common
のサポートを完全に削除し、以前利用可能だった回避策も含めて削除しました。
Iron Softwareは、IronSoftware.Drawing
という、System.Drawing.Commonのオープンソース代替をリリースしました。
- NuGetパッケージ
-
詳細については、公式ドキュメントをご覧ください。