Category: .net

都 2021 年了,還需要把 .NET 元件包成 COM+ 給老 ASP/VBScript/IE ActiveX/VB6/Delphi 用的場合如鳳毛麟角,但我有不少文章本來就是寫給有緣人看的 (收到有緣人留言還會一陣激動),這篇文件適合從事古蹟維修的同學,沒聽過 COM+ 的朋友請跳過,把時間花在...

修維 ASP 古蹟遇到問題 - 大清乾隆年間啟用的 OO4O (Oracle Objects for OLE) 在改連 UTF8 編碼的新版 Oracle DB 後中文變亂碼。不想浪費生命在他 X 的 Oracle Client 上,更甭提是 Oracle 11cR2 之後不再支援的 OO4O,我打...

今天解決掉一件糾纏近十年的困擾,敲開薰! 過去我分享過不少組件重新導向的技巧,其實十之八九都是 ODP.NET 引起的(為此我還曾研發過暴力解法、暴力解法懶人工具、核武級 ODP.NET 版號暴力破解工具,看我怨念有多深),版號衝突問題大多可藉由在 config 加入 bindingRedirect...

有讀者問到 ODP.NET CommandText 跑多行指令的花式應用,包含在 Script Block DECLARE 宣告變數以及傳回暫存資料表結果。 透過多組 PL/SQL 邏輯組裝資料存進暫存資料表再一次傳回結果的做法,實務上還蠻常見的,但大多情況會寫成 Procedure。如果能讓 .N...

近期在 2019 年的舊文 - 閒聊 - VB.NET 與 C# 黃金交叉?看到新留言,好奇心再起。 一年多過去,.NET 5已於去年 11 月問市,VB.NET 的發展現況有沒有改變呢? 查到 2020 年 5 月 VBTeam 有篇部落格文章 - Visual Basic support pl...

透過程式存取 Windows 網路分享的檔案也算常見需求,但存取身分是個問題。之前我慣用的技巧是用有權限的 AD 網域帳號執行排程存取網路分享,但這招要搬進網站或遇到不同網路分享用不同帳號便會破功。最近遇上類似議題,直覺要得回頭靠 WinAPI Impersonation 解決,之前曾寫過通用元件,...

被一個 XML 讀取問題卡住大半天,寫篇筆記留念。 我有個 Coding4Fun 電子書製作工具,將 XHTML 範本檔案內嵌成資源(Embedded Resource),再用 GetEmbResString() 讀取範本 XML 交給 XDocument.Parse() 轉成 XML 物件操作: ...

先說說應用情境:我有個外部傳入的結構化資料需要套表產生 Word 表格,使用者預先做好範本 Word 檔,調好表格大小、文字對齊、字型顏色樣式... 等等: 理想目標是傳入包含編號、分類、廠牌型號、數量等屬性的物件陣列轉成 Word 表格。 using System.Collections.Gen...

有個使用 SSH.NET 連線 SFTP 交換檔案的排程,一登入便冒出錯誤 - Channel was closed 並立刻斷線,故意亂給帳號密碼則會出現 Permission denied (password),初步研判帳號密碼沒問題,錯誤另有原因。 爬文查不到明確方向,大致指向連線被伺服器切斷方...

這篇聊聊如何防止測試環境專用的特殊程式邏輯在正式環境被誤用? 實務上測試或開發環境與實際環境常存在難以克服的差異,為方便測試,有時我們需要加入一些測試專用的程式碼,例如:資料轉換、省略權限檢查... 等。 最不花腦筋的做法是直接把測試邏輯加進程式碼,上線前再記得拿掉。但老鳥都知道這樣一定有風險,一旦...

如果你很早開始寫 .NET Core 程式,有個節省寶貴 SSD 空間的小訣竅 - 移除不必要的 .NET Core SDK。 .NET Core/.NET 5 的 Runtime 或 SDK 採 Side-by-Side 安裝,新舊版會並存,新版會換掉 C:\Program Files\dotne...

由前陣子 lock + 共用靜態物件 vs 每次新建物件的效能案例,當新建物件成本不高且方法非 Thread-Safe 時,共用靜態物件加 lock 還不如每次新建物件有效率,該如何決策顯而易見。但如果新建物件的成本很高呢?若建構物件需要耗用大量 CPU 或記憶體,甚至得爭奪有限資源(固定數量的 S...

專案裡有個需求,希望當使用者輸入字串為日期或日期時間時自動轉成 DateTime 型別,我想到用 DateTime.TryParse 來做(註:更嚴謹的做法是改用 DateTime.TryParseExact 正向表列所有支援格式,但我選擇借用 TryParse 內建的彈性較省事),目標是要能支援多...

.NET 5 是微軟最新推出的程式開發平台,要在個人電腦上執行用 .NET 5 開發的程式,先安裝 .NET 5 所需要的執行環境(術語叫 SDK 或 Runtime)通常會比較方便,以下將介紹如何在 Windows 安裝 .NET 5 執行環境。 .NET 5 可支援的作業系統如下,基本上除非你還...

前幾天聊到我喜歡將小工具程式編譯成單一檔案,免安裝,不必解壓縮 DLL,整個工具就一個 EXE 檔,放到桌面上點兩下就能用,這是最棒的部署方式! 文章裡提到 .NET 5 內建嵌入參照 DLL 功能,且不像 .NET Core 3.1 得將內嵌參照 DLL 寫成實體檔暫存,實現真正的單檔執行。這篇文...

前天提到 JScript.NET 跑 Eval() 在多緒執行出錯崩潰的案例,問題根源在當初覺得反覆編譯 JScript 建立組件並建立物件個體會拖累效能,故寫成只建一個靜態物件共用,但因 eval() 並非 Thread-Safe 方法(指被多條執行緒同時執行也不會有問題),於是線上大量使用下有微...