文章分類/Infragistics
平台兼容性
使用 Blazor Excel 庫的 Blazor Server 應用程序的執行環境 (OS) 具有以下要求,具體取決於 Blazor Server 應用程序的目標框架:
在非 Windows 操作系統上運行的 .NET 6.0 Blazor Server 應用程序中調用 Blazor Excel 庫的函數會導致System.TypeInitializationException異常(System.PlatformNotSupportedException 作為內部異常),並且無法使用 Blazor Excel 庫。
背景
此行為是由於Blazor Excel 庫所依賴的 System.Drawing.Common包僅在 .NET 6.0 以後的 Windows 操作系統上受支持。
來源:https ://docs.microsoft.com/ja-jp/dotnet/core/compatibility/core-libraries/6.0/system-drawing-common-windows-only
解決方法
為了能夠在 Windows 以外的操作系統上運行調用 Blazor Excel 庫功能的 .NET 6.0 Blazor Server 應用程序,即使用 System.Drawing.Common 包的 .NET 6.0 ASP.NET Core 應用程序,需要以下內容可以通過將JSON 文件放置在文件名“runtimeconfig.template.json”的項目文件夾中並構建它來實現。
{ "configProperties": { "System.Drawing.EnableUnixSupport": true } }
補充
在 Linux 上運行時,可能會出現 System.TypeInitializationException 異常,並顯示“System.DllNotFoundException:無法加載共享庫“libgdiplus”或其依賴項之一。”作為內部異常。 在這種情況下,請在您的操作系統上安裝 libgdiplus(以下是基於 Debian 的包管理器的示例)。
sudo apt-get install libgdiplus
很重要的一點
從 .NET 6.0 開始,非 Windows 操作系統上出現的 System.Drawing.Common 包中的錯誤將不會得到修復。
此外,此解決方法是作為寬限期提供的,直到您遷移到較新的庫為止。 上述設置將在計劃於 2022 年 11 月發布的 .NET 7 中被禁用。換句話說,在 Windows 以外的操作系統上調用 .NET 7 及更高版本上的 System.Drawing.Common 包將是不可能的。