一、前言
最近,由於好久沒升級底層框架,一直用着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.1DotNetCore.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
