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