Infragistics|Ignite UI for Blazor|Blazor Excel 庫 – Blazor Server 中的執行平台支持

infragistics log


平台兼容性

使用 Blazor Excel 庫的 Blazor Server 應用程序的執行環境 (OS) 具有以下要求,具體取決於 Blazor Server 應用程序的目標框架:

目標框架 視窗 非 Windows 操作系統(Linux、macOS)
.NET核心3.1 ✅ 有效 ✅ 有效
.NET 5.0 ✅ 有效 ✅ 有效
.NET 6.0 ✅ 有效 (無需額外配置)🚫不工作
.NET 7.0及以上版本 ✅ 有效 🚫無法操作_

在非 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 包將是不可能的。


延伸閱讀
aa71435723的大頭照
Winston

Eggplant DAI 自動化測試專家。

留言