一、前言
最近,由於好久沒升級底層框架,一直用著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
中最後的版本了。
還有一個終極方案,那就是直接拉程式碼下來,自己發包解決,嘿嘿嘿。
四、參考文獻
五、後話
可能這是我個人試水出的問題,如果有更好的解決方式可以說一下。
不過這感覺會被拍死的節奏。
另外,如果想去試試掉坑的話,可以看看我的例子。
Bing.NetCore