AgileConfig 1.8.0 已適配 .NET8

2023-12-10 21:03:52

Hello 大家好。本月圈子裡最大的事莫過於 .NET8 正式 release。群友們都在適配 .NET8。抽個週末我也把 AgileConfig 升級到了 .NET8。下面把升級的過程簡單記錄一下,其中有個小坑,對大家升級的時候可能有所幫助。

升級

  • 升級 .NET8
    修改所有專案的目標框架為 .NET8.0
  • 升級 nuget 包
    在 nuget 包管理器裡把所有能更新的包全部更新到最新。

    有一個包 Microsoft.AspNetCore.Http.Abstractions 提示已經棄用,需要處理一下。

    因為這個包現在微軟已經不在 nuget 上提供,需要使用框架參照。
    修改專案檔案,在 ItemGroup裡新增以下內容:
 <ItemGroup>
    <FrameworkReference Include="Microsoft.AspNetCore.App" />
 </ItemGroup>


再次編譯,警告訊息。
這個問題其實跟 .NET8 沒有關係,應該是我 3.1 升 6 的時候遺忘了。

  • 修改 dockerfile
    原來的 dockerfile 是基於 .NET6 映象的,需要修改為 .NET8
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
....

FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
....

把 6 改成 8,其他不用改,超級簡單。

通過以上操作,在本地執行沒有問題,打包成映象後在本地 docker desktop 環境下跑也沒問題。但是釋出到伺服器上用映象跑缺報錯:Failed to create CoreCLR, HRESULT: 0x80070008

警告排查是由於低版本的 docker engine 與某些 ubuntu 的映象不相容,需要在 docker run 的時候新增引數。

--security-opt seccomp=unconfined

或者在 docker-compose.yml 上新增引數:

security_opt:
    - seccomp=unconfined

新增以上引數後一切正常了。

參考:https://docs.linuxserver.io/FAQ/

總結

本次升級可以說相當簡單。得益於 .NET 介面的穩定,升級框架幾乎不用動任何一行自己的程式碼。只是最新的 .aspnet8 runtime 的映象對低版本的 docker engine 相容性有點問題,使用 docker 跑的同學需要注意一下。

最後

✨✨✨Github地址:https://github.com/dotnetcore/AgileConfig 開源不易,歡迎star✨✨✨
✨✨✨Gitee地址:https://gitee.com/kklldog/AgileConfig ✨✨✨
演示地址:http://agileconfig_server.xbaby.xyz/ 超級管理員賬號:admin 密碼:123456

關注我的公眾號一起玩轉技術