我前陣子幫客戶開發一個 Windows Forms 應用程式,使用 .NET 8 來開發,不過在案子的最後一刻,客戶要求要加上一個「版本資訊」的功能,這個功能要顯示目前程式的版本號。這個功能實在是不常寫,沒想到還真的有點地雷,因為跟 .NET Framework 有點不太一樣了。這篇文章就來分享一下我在開發過程中遇到的問題,以及解決方法。
... 繼續閱讀 ...
由於大多數 LLM 模型都有 Token 數量的限制,因此我們在開發 Generative AI (GAI) 應用程式時,都會對 Token 的用量斤斤計較,因此我們需要一個可以計算 Token 數量的函式庫,而在 .NET 世界裡 SharpToken 套件不但可以對文字進行編碼(Tokenize)與解碼,還可以用來計算文字的 Token 數量。今天這篇文章我就來介紹這個好用的 NuGet 套件。
... 繼續閱讀 ...
其實 C# 的 Span<T>
結構已經問世很多年了,直到昨天有同事問我這個東西要怎麼用,我就把多年前做好的簡報給他研究,然後順便複習一下這個厲害的玩意。
... 繼續閱讀 ...
最近有個維護案需要定期匯入百萬筆記錄到 SQL Server 之中,客戶的原始廠商在後台是有寫了一個功能可以讓後台管理員上傳 Excel 檔案,然後透過程式一筆一筆新增到資料庫中,但這個匯入的過程竟然要花上 1.5 小時才能新增完畢,實在是太慢了。其實從 .NET Framework 2.0 開始,在 System.Data.SqlClient
命名空間下就有個 SqlBulkCopy 類別可以用來高效率的大量寫入資料到資料表中,其寫入速度可能快上 50 倍之多!
... 繼續閱讀 ...
前陣子在研究 TOTP (Time-based One-Time Password) 的實作方式,發現還蠻容易的,這篇文章我就來記錄一下實作的注意事項。
... 繼續閱讀 ...
QRCoder 是一套 .NET 知名的 QRCode 產生器,從 .NET Framework 的年代就存在,支援多種 QRCode 輸出格式,並且可以輸出成 Bitmap
或 PNG
等圖片類型。不過我最近發現他的最新版 v1.4.3 在 .NET 6.0 出現了一些問題,所以我在這裡紀錄一下正確的 QRCoder 使用方法。
... 繼續閱讀 ...
今天在公司有位小伙伴問我說:「保哥,公司最近接到一個維護案,我拿到 Source Code 的時候都看不到 *.csproj 專案檔或 *.sln 方案檔耶,這樣怎麼用 Visual Studio 2022 開發?」我說:「你就是太年輕了,才不知道有 ASP.NET Web Site Project 的存在,你只碰過 ASP.NET Web Application Project 而已。」我在指導完他如何開啟與將 ASP.NET Web Site Project 加入版控後(很多雷),就順手把 CI Pipelines 設定起來,這篇章我就來說說如何對 ASP.NET Web Site Project 進行自動建置。
... 繼續閱讀 ...
大家都知道,要反組譯一個 .NET 開發的 *.dll
檔案是非常容易的一件事,只要安裝 ILSpy 工具,就可以很輕易的把當初撰寫的原始碼全部還原。話說回來,我們公司承接的專案,一向都提供完整的原始碼給客戶,所以我自己不太有「混淆器」的需求。但我記得多年前我們有個用 .NET 開發的產品,當時就有用到 .NET 混淆器,避免組件被客戶反組譯。今天這篇文章,我打算介紹一個名為 Obfuscar 的好用工具,教你怎樣把手邊編譯過的 .NET 組件混淆成誰也無法理解的版本。
... 繼續閱讀 ...
最近發現一個三年前的一個 ASP.NET Web API 專案沒有設定 CI 自動建置,在設定的過程中發現無法建置方案 (Build Solution),錯誤訊息是找不到 .NET Framework 4.5 參考組件,但我的專案明明是 .NET Framework 4.8 了啊,經過一番查找之後,才發現原來是資料庫專案(Database Project)搞的鬼,這篇文章我就來說說這個問題的來龍去脈與解法。
... 繼續閱讀 ...