微軟驗證碼項目 Captcha Code Demo 從 .NET Core 1.1.2升級到2.1.0

How to make and use captcha code in ASP.NET Core

在ASP.NET Core 中如何實現 captcha 驗證碼

 

這個 Demo 是在微軟 msdn 中找到的,早期 2017年6月30日發佈。發現它的時候是 2019年10月30日。這時候 .NET Core 版本 3.0 已發佈。Visual Studio 2019 也已經自動更新至 16.3.7。

下面是升級的整個過程,文章最後附上升級完成的解決方案壓縮包供下載調試。

 

1.檢查當前.NET Core 版本
Demo 整體代碼十分簡潔,但是在我的環境中能通過編譯無法正確運行。項目的默認屬性如下:

2.切換 .NET Core 版本

接下來嘗試將 .NET Core 版本切換至 .NET Core 2.1 (當前參與項目的版本),切換後只出現一個錯誤如下:

錯誤    CS0433    類型“Color”同時存在於“CoreCompat.System.Drawing, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c0a7ed9c2333b592”和“System.Drawing.Primitives, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”中    CSCaptchaCodeASPNETCore    D:\Source\How to make and use captcha code in ASP.NET Core\C#\CSCaptchaCodeASPNETCore\Captcha.cs    60    活動的

這個錯誤看起來是因爲 CoreCompat.System.Drawing 1.0.0.0 與 System.Drawing.Primitives 4.2.0.0 中均定義了 Color 類。所以出現以上錯誤。於是首先做的就是將 Color 類使用完全限定名來指向其中一個。然後才發現這兩個包中命名空間也是一樣的。

 

3.更新包 CoreCompat.System.Drawing -Version 1.0.0-beta006

.NET Core 1.x 與 2.x 存在些許差異,既然 SDK 都更新了,也不妨繼續把包更新了。打開菜單 工具(T) -> NuGet 包管理器(N) -> 管理解決方案的 NuGet 程序包(N)

結果可以看出這個包從 2016年6月27日發佈後就沒有再發布過新包。看起來這條路是走不通了。於是也放棄這個包並嘗試將 CoreCompat.System.Drawing 這個包名在 NuGet 裏面搜索看看有沒有可以替代的包。通過搜索看起來並沒有完全匹配的包名出現。於是嘗試選擇了第一個結果 System.Drawing.Common (4.6.0) 。比較幸運,錯誤消失,編譯通過了。

但是依然不能正確運行,索性將整個解決方案的全部包通過 NuGet 升級(上圖2/3/4/5)。最終 F5 能正常運行了。

4.升級前後對比與最終 Demo 下載

下面是升級前後依賴項的對比,主要是將:

CoreCompat.System.Drawing (Version 1.0.0-beta006) -> System.Drawing.Common (4.6.0)

點擊下載解決方案壓縮包

下載地址:https://download.csdn.net/download/s2t11enterprise/11942562

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章