AgileConfig 1.8.0 已適配 .NET8

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/#symptoms

總結

本次升級可以說相當簡單。得益於 .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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章