[日常填坑系列]CAP食用指南-版本引用問題
阿新 • • 發佈:2021-01-14
# 一、前言
最近,由於好久沒升級底層框架,一直用著`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](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](https://github.com/dotnetcore/CAP/issues/690)
- CAP引用
![](https://img2020.cnblogs.com/blog/534030/202101/534030-20210113233245224-1974025462.png)
- EFCore引用
![](https://img2020.cnblogs.com/blog/534030/202101/534030-20210113233254283-571676530.png)
# 三、解決方案
既然問題都找到了,那麼現在就是解決問題的時候了。
**該方案僅限於`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 版本釋出通告](https://www.cnblogs.com/savorboard/p/cap-3-1.html#%E5%85%B6%E4%BB%96)
# 五、後話
可能這是我個人試水出的問題,如果有更好的解決方式可以說一下。
不過這感覺會被拍死的節奏。
另外,如果想去試試掉坑的話,可以看看我的例子。
[Bing.NetCore](https://github.com/bing-framework/Bing.NetCore/tree/feature/dev-vn