[日常填坑系列]CAP食用指南-版本參照問題
2021-01-14 00:00:21 軟體

一、前言

最近,由於好久沒升級底層框架,一直用著netcore2.2版本,導致有些包沒能更新到最新的版本,例如:CAP
然而,在最近升級到CAP:3.1.2版本的時候,發現有點小坑,只能退回到CAP:3.1.1版本了。

二、原因

為啥要將CAP版本從3.1.2退回到3.1.1呢?

根本原因:CAP:3.1.2移除了DotNetCore.CAP.Serialization.StringSerializer序列化類。這將導致DotNetCore.CAP.MySql:3.0.4的參照異常問題。https://github.com/dotnetcore/CAP/issues/764

在這裡,可能會有人問,為什麼不將DotNetCore.CAP.MySql升級為3.1.2版本呢?

由於本人使用MySQL資料庫,因此,使用的是Pomelo.EntityFrameworkCore.MySql:3.2.4版本的ORM。
然而,該類庫約束了MySqlConnector的最高版本與最低版本,又由於本人暫時還不想用net5的情況下。因此,只能使用DotNetCore.CAP.MySql:3.0.4版本。https://github.com/dotnetcore/CAP/issues/690

  • CAP參照
  • EFCore參照

三、解決方案

既然問題都找到了,那麼現在就是解決問題的時候了。
該方案僅限於netcore3.1,其它版本不負責呀。

相關版本如下:

  • DotNetCore.CAP:3.1.1
  • DotNetCore.CAP.Dashboard:3.1.1。儀表盤這個也要參照StringSerializer這個類,所以還是跟主版本一致吧。
  • DotNetCore.CAP.RabbitMQ:3.1.1。個人使用版本,不解釋。
  • DotNetCore.CAP.MySql:3.0.4。目前來說,這個版本能在netcore3.1中最後的版本了,其它更高的版本目測都得升級net5
  • Pomelo.EntityFrameworkCore.MySql:3.2.4。目前來說,這個版本是netcore3.1中最後的版本了。

還有一個終極方案,那就是直接拉程式碼下來,自己發包解決,嘿嘿嘿。

四、參考文獻

CAP 3.1 版本釋出通告

五、後話

可能這是我個人試水出的問題,如果有更好的解決方式可以說一下。
不過這感覺會被拍死的節奏。
另外,如果想去試試掉坑的話,可以看看我的例子。
Bing.NetCore