Category: .net

組件繫結重新導向是處理 .NET 組件版本衝突的捷徑, 將特定版號範圍重新導向統一版本,以化解部分程式要用 A.dll 1.1 版,某些要用 A.dll 1.2 的版本衝突。 版本衝突問題在實務上並不算罕見,過去的處理經驗還不少,一併整理在此提供參考: 組件繫結重新導向功能的實地觀察--以ODP....

.NET 效能測試首次執行偏慢現象解析一文得到老讀者 Lane Kuo 的迴響,補充一篇好文:.NET Just in Time Compilation and Warming up Your System by Abhinaba Basu,一掃我對 .NET JIT 編譯的迷思。 .NET 的 d...

上回研究 Stopwatch 測量微秒精確度有個小插曲,第一次執行 MD5、SHA1 運算總會特別慢,慢了五倍有餘,先跑 MD5 慢的是 MD5,先跑 SHA1 慢的就是 SHA1,之後的數字才正常。 這個現象挺有趣,初次起始慢讓我們優先想到的原因多半與笨重資源有關,例如:建立網路連線、開啟檔案、配...

上週的 SSL 憑證茶包還有下集。 經手動匯入 TWCA 憑證,IE/Chrome 連上目標 HTTPS 網頁已正常,但呼叫廠商 API 的 .NET 服務程式仍冒出 Could not establish trust relationship for SSL/TLS secure channel ...

跟同事討論到高負載 .NET Logging 議題。某程式有巨量 Log 寫入需求,執行幾小時 Log 量可達數 GB,甚至懷疑寫 Log 可能成為效率瓶頸之一,程式目前使用 log4net,考是是否應更換成其他 Log 程式庫?如果要換,有哪些選擇? 早年用過 log4net,複雜的 XML 設定...

介紹一個比較進階的效能議題 - False Sharing,先分享兩篇文章: 多執行緒程式的效能隱形殺手 - False sharing by Jed False-sharing 以及其解法 (以 Golang 為例) by Genchi Lu False Sharing 是一種開發時不易意識到...

因安裝軟體需求,要在 Windows Enterprise 上安裝 .NET 4.7.2,卻得到「這個作業系統不支援 .NET Framework 4.7.2」訊息。 呼叫 WinVer 查了版本,版本為 10.0,組建 10240。 查到這裡我有點疑惑,Windows 10 版號不是 1703...

透過 WebClient.DownloadFile() 或 DownloadData() 下載檔案對 .NET 老鳥而言是雕蟲小技(參考:CODE-使用C#程式從網站下載檔案 ),但此種寫法檔名需自行指定。若下載對象非靜態檔案,伺服器端程式會透過 Content-Disposition Respon...

同事分享了一記讓 32 位元 .NET 程式突破 2GB 記憶體上限的密技,讓我不禁獻上了膝蓋,當然要轉分享一下。 .NET 編譯成 32 位元與 64 位元最大的差異在於可用記憶體上限,32 位元的記憶體定址上限為 4GB,其中 2GB 配置給作業系統核心模式,應用程式為使用者模式只有 2G...

.NET 4.5 起加入 ZipArchive、ZipFile 等列類別,自此不用額外安裝第三方程式庫就能製作 ZIP 檔。微軟官方文件則有篇範例文章,操作說明:壓縮與解壓縮檔案 - Microsoft Docs,介紹如何使用 System.IO.Compression 的一系列類別壓縮及解壓縮...

前篇文章介紹了輕巧但威力強大的 OpenCC,使用 opencc.exe 可輕鬆完成繁簡轉換。 如果我們要在 .NET 裡寫一個函式招喚 OpenCC 將繁體字串轉成簡體字串該怎麼做? 呼叫外部 .exe 這等小事,自然難不倒 .NET 老鳥,生個 System.Diagnostics.Pr...

前篇文章用 Balabolka 搞定自製英文單字朗讀 MP3,但老讀者們都猜到接下來會發生什麼事... 是的,C# 整合 SAPI 讓電腦講話的練習來了! 原本以為要裝什麼 SDK 或套件,沒想到 .NET 已內建,專案只需參照 System.Speech 就好。 開始前先看一下你的 Wi...

使用者報案某網頁功能故障,經抽絲剝繭鎖定爆炸點在一段「TransactionScope 中以 LINQ to SQL 取回物件集合,跑 foreach 開連線查資料庫」邏輯(警語:跑迴圈執行資料庫查詢,迴圈次數如過高將成效能殺手,宜避免),簡化為以下程式片段可重現問題:(註: 程式碼經過簡化,在...

前陣子談過用 HttpUtility.ParseQueryString 解析、修改及還原參數的簡便做法,一不做二不休,再來聊聊如果拿到一個 URL, HTTP 要改 HTTPS、主機名稱要換、Port、路徑要改,是不是也有不走字串比對置換的優雅做法? 爬文查到好用的 .NET 內建物件 - U...

最近在資料夾比對工具遇到一個需求:要以某個資料夾為基準推算檔案的相對路徑。例如,若基準資料夾為 C:\Folder,則 C:\Folder\SubFolder\Test.txt 的相對路徑為 SubFolder\Test.txt。 類似需求以前加減寫過,說穿了全是字串比對的功夫,靠將路徑前方相...