1. 程式人生 > >[日常填坑系列]CAP食用指南-版本引用問題

[日常填坑系列]CAP食用指南-版本引用問題

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