Ignite UI for Blazor 21.2.52 バージョン時点での情報に基づいています。より新しいバージョンでは変更・改善されている場合があります。

プラットフォーム対応状況

Blazor Excel Library を使用した Blazor Server アプリケーションの実行環境 (OS) には、Blazor Server アプリケーションの対象フレームワークに応じて以下の条件があります。

対象フレームワークWindowsWindows 以外の OS (Linux, macOS)
.NET Core 3.1✅ 動作可✅ 動作可
.NET 5.0✅ 動作可✅ 動作可
.NET 6.0✅ 動作可(追加の設定なしでは) ?動作不可
.NET 7.0 およびそれ以降✅ 動作可?動作不可

Windows 以外の OS 上で実行中の .NET 6.0 Blazor Server アプリケーション内で Blazor Excel Library の機能を呼び出すと、(System.PlatformNotSupportedException を内部例外とした) System.TypeInitializationException 例外が発生し、Blazor Excel Library を使用できません。

背景

この振る舞いは、Blazor Excel Library が依存している System.Drawing.Common パッケージが、.NET 6.0 以降、Windows OS 上でのみサポートされることとなったことが原因です。

出典: https://docs.microsoft.com/ja-jp/dotnet/core/compatibility/core-libraries/6.0/system-drawing-common-windows-only

回避策

Blazor Excel Library の機能を呼び出す .NET 6.0 Blazor Server アプリケーション、すなわち System.Drawing.Common パッケージを使用した .NET 6.0 ASP.NET Core アプリケーションを、Windows 以外の OS 上で実行可能にするには、以下の内容の JSON ファイルを “runtimeconfig.template.json” というファイル名でプロジェクトフォルダに配置してビルドすることで可能となります。

{
  "configProperties": {
    "System.Drawing.EnableUnixSupport": true
  }
}

補足

Linux 上での実行時、”System.DllNotFoundException: Unable to load shared library ‘libgdiplus’ or one of its dependencies.” を内部例外とした System.TypeInitializationException 例外が発生する場合があります。
その場合は libgdiplus を OS にインストールすることで対処します (下記は Debian 系のパッケージマネージャにおける例)。

$ sudo apt-get install libgdiplus

注意点

今後 .NET 6.0 以降、Windows 以外の OS で発生する System.Drawing.Common パッケージの不具合は修正されません

また、この回避方法は、より新しいライブラリに移行するまでの猶予のために設けられたものです。
2022年11月にリリースが予定されている .NET 7 では上記設定は無効となり、すなわち、.NET 7 以降におけるSystem.Drawing.Common パッケージの Windows 以外の OS での呼び出しは不可能とされる予定です。

Tagged:

製品について

Ignite UI for Blazor