Ignite UI for Blazor 21.2.52 バージョン時点での情報に基づいています。より新しいバージョンでは変更・改善されている場合があります。
プラットフォーム対応状況
Blazor Excel Library を使用した Blazor Server アプリケーションの実行環境 (OS) には、Blazor Server アプリケーションの対象フレームワークに応じて以下の条件があります。
対象フレームワーク | Windows | Windows 以外の 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 上でのみサポートされることとなったことが原因です。
回避策
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 での呼び出しは不可能とされる予定です。