使用 Topshelf 與 .NET 泛型主機建立 Windows Service 專案架構

上一篇使用 Topshelf 處理了啟動 Windows Service 時要環境參數的問題,為了讓之後用 Topshelf 寫 Windows Service 時,有更一致的寫法,這篇將使用使用 Topshelf 與 .NET 泛型主機架構,來建立專案架構。

傳遞參數來啟動 Windows Service (使用 Topshelf 實作)

使用 Topshelf 框架來開發 Windows Service 專案,是一個相當不錯的選擇,他解決的版本更新總是又要用 sc.exe 重新安裝 Windows Service 以及 Debug 不易的問題。然而 Topshelf 框架本質是一個 Console 應用程式,這隻程式最終安裝到 Windows 服務控制管理器(SCM)中,而有時候我們會希望傳遞參數,然後根據參數值來啟動應用程式,但這樣的行為在 SCM 卻無法直接處理,因此要做到此功能,處理方式要稍微有點不一樣。

使用系統管理員身分開啟 Windows Terminal 分頁

如果你曾經使用過 cmder 你一定對讚譽有佳,我也不例外,不過自從我改用 Windows Terminal 之後,除了無法只將其中一個 Tab 分頁用系統管理員開啟外,我再也沒有想念 cmder 了,而最近好同事教了我一招,讓我能用系統管理員身分開啟 Windows Terminal 分頁,我想我真的可以忘記 cmder 了(謝謝 cmder 曾經讓我重拾打指令的快感)。

批次移除舊版本 .NET Core SDK

當使用 .NET Core 開發一段時間後,會發現你的作業系統安裝了很多版本的 .NET Core SDK 或 Runtime,因為在 Visual Studio 2019 16.3 版之前,每次更新 Visual Studio,Visual Studio 安裝程式會安裝相依版本的 .NET Core SDK,因此在控制台的 [新增或移除程式] 中,會看到很多版本的 .NET Core SDK,官方推出了一個小工具,幫助我們快速移除這些不會再用到的 SDK。

使用 oh-my-posh 美化 PowerShell 樣式

之前一直很羨慕 Mac OS 的使用者有 iTerm2 + oh-my-zsh 可以讓終端命令列介面變得美美的,自從 Microsoft 官方推出 Windows Terminal,讓我弭補了沒有 iTerm2 的缺憾後,再加上 oh-my-posh 這個 Powershell 樣式套件,終於可以在 Windows 環境下輕送設定美美的 PowerShell 樣式了!這篇紀錄如何輕鬆使用 oh-my-posh 美化 PowerShell 樣式。

System.Text.Json 反序列化/序列化轉換 TimeSpan 型別

System.Text.Json 目前無法反/序列化轉換 TimeSpan 型別,但從 .NET 5 的 Milestone可以知道,這功能將會包含在 .NET 5 之中,在此之前,如果真的要對 TimeSpan 做反/序列化轉換,可以自行實作 JsonConverter 來處理。

System.Text.Json 忽略名稱大小寫做序列化/反序列化

使用 System.Text.Json 做序列化/反序列化的時候,如果看起來程式沒有錯,但不知道為甚麼序列化一直失敗,或是反序列化一直拿到 null 而無法取得所設定的值,很有可能就是你中了尊重名稱大小寫這個雷,解法就是將 JsonSerializerOptionsPropertyNameCaseInsensitive 屬性設定成 true 就可以了。

在 MSBuild 專案檔中使用中文的 IntelliSense

若要說 Visual Stdio 最強大的武器,莫過於內建強大的 IntelliSense 了,提供列出成員、參數資訊、快速諮詢和自動完成文字等程式碼輔助工具,讓開發人員撰寫程式碼的速度提升了不少,而且藉由 IntelliSense 的提示,還可以在 IDE 中瀏覽當下使用的 API 的相關提示說明,而在 MSBuild 專案檔中(.csproj),也是可以使用中文的 IntelliSense 的唷!

註冊/安排 Azure 認證考試

如果你是去上 Azure 認證實體課程了話,對應的機構應該會幫你把考試日期安排好,但如果你是自己念書了話,你可能就要自行註冊/安排考試行程了,這篇手把手帶你註冊認證考試。

在 NuGet 套件中加入 XML 文件註解

寫程式的時候要養成寫好註解的習慣,讓後續接手的開發者能容易的知道該段程式碼在做甚麼,開發通用的套件時也是一樣,讓開發者能在使用你所打造的 API 時,能透過 XML 文件註解(C# XML Documentation Comments)來清楚知道該 API 的用途是什麼,這樣可以提升軟體品質,且有助於開發效率。