發表文章

目前顯示的是 8月, 2020的文章

撰寫一個擴充套件將 ASP.NET MVC5 專案轉換成 .NET Core 3.1 的專案

圖片
圖片取自:https://stackoverflow.com/questions/5513708/vs-extensibility-architecture-package-api-visual-studio-library 前言 記得,在去年的 Taiwan .NET Conf 2019 的分享裡,我分享了一場『該準備從 .NET Framework 4.x 遷移到 .NET Core 3.0 的嗎?』因為分享的當下 .NET Core 3.1 還未推出,而在分享前,我除了思考當前企業所面臨的挑戰外,心裡也迸出一個想法就是,我何不撰寫一個能夠將 ASP.NET MVC 5 的專案直接轉換為 .NET Core 3 專案的擴充套件呢?因為一直以來,我都有在涉獵 VS Extensibility & VS Package 等開發,自身也有撰寫一些 VS 擴充套件,像是 MyORM Extensions  ,也有推出 C# Project Templates 線上課程『 團隊開發系列-設計符合團隊的範本精靈 (Project Template) 』等等,也有上架在 VS Marketplace 上,於是在這場 Session 開始前兩個禮拜,便著手開始撰寫開發這個套件。 下方為當時的 Slides: 該準備從 .NET Framework 4.x 遷移至 .NET Core 3.0 了嗎? from Gelis Wu 架構規劃 但因為時間非常有限,而我又必須先做出一個雛形,不過我希望在 VS 上的操作模式是:【我可以任意在任何一個 ASP.NET MVC 5 的專案點滑鼠右鍵隨即有個選單 "Convert MVC5 to .NET Core 3"】的 MenuItem 因此,我需要單鍵就可將 ASP.NET MVC 5 的專案轉換成 .NET Core 3 的專案類型。 關於 VS Pacakges 要做到這件事,不單單是像 MyORM 透過 IWizard 介面與 Project Templates 就可以實現,VS Extensibility SDK 中可開發的擴充套件提供了下面幾種類型: Analyzer  Project Templates  Item Templates  To...

.NET 使用 Link CS檔案的型別比較的捉鬼記

圖片
圖片取自: https://home.gamer.com.tw/creationDetail.php?sn=2461568 前言 最近擔任某產業的 Redis 導入的執行顧問,我的任務就是,協助將 Redis 導入在既有的系統裡,在這個顧問案裡面,我遇到的挑戰是: 現有系統使用某產品進行開發 (好處是個系統共用此平台 Platform 提供的服務/壞處是某處出現問題就會全部一起死) 現有系統使用 .NET 4.0 的 Object Cache、所以要全部上 Redis,但是 Object Cache 是撰寫在該產品平台 Platform 內 Kernel 所提供的功能之一, 我得協助修改核心 Kernel 的 Cache Provider 另外是,系統為 ASP.NET WebForm ,所以許多存放在 Cache 內的資料均為 DataSet(基於一些原因我無法全改為不使用 DataSet), 但因為我們知道 DataSet 並無法直接序列化轉為 Redis 可接受的格式,所以我得做些手腳以協助將這些資料轉換為 Redis 可以接受的格式 有上千隻程式運行在上面、必須一氣呵成! 包含伺服器主機架構規劃 [建置 HA 高可用性架構](必須購置新主機),所以也包含硬體規格建議等等 開始 這個案子在開始之前,最麻煩之處、也比較有代表性工作在於: Code-Review 包括現有平台 Platform & 子系統 改寫現有平台原始程式碼 & 包括最主要的 Cache Provider 以隔離測試(Isolation Unit Test)方法來進行改寫 進行 Code-Review 的部分比須帶著團隊來進行,當然包括 IntelliSys 平台的維護者,因為我需要了解現有的架構規劃、現有的 Cache 的使用情況、與現有 Cache 策略使用規劃等等、接著就是評估修改的幅度 與 範圍 ,因為程式修改的部分還是得以專案形式來進行,我還是會估一個類似 WBS 的工時並提供給客戶。 實際進行時,我大約花了 1 天的時間,對!幾乎一整天的時間,看了整個 IntelliSys 幾近所有的程式碼,因為為了較精準的估花費時間,也是因為客戶要求。第二天便開始架設 Redis 環境,第三天開始修改程式碼。 以 Unit Test 方式...