The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

使用 Directory.Build.props 與 Directory.Build.targets 自動化 .NET 建置作業

在多專案的 .NET 團隊合作中,手動安裝工具和設定環境常常導致流程不一致,甚至影響效率。透過善用 Directory.Build.propsDirectory.Build.targets,我們可以實現自動化的建置流程,讓每位團隊成員只需執行一次 dotnet build,就能完成工具安裝、husky hooks 配置,以及程式碼風格檢查,確保開發環境的一致性與便利性。這篇文章將帶你了解這兩個檔案的差異與應用,並示範如何利用它們來自動化 Husky.Net 的安裝與設定。

... 繼續閱讀 ...

如何設定 Husky.Net 讓開發團隊確保一致的程式碼風格

在 .NET 專案設定 Husky 實在有夠簡單,只要用 Husky.Net 工具即可,一分鐘就可以搞定所有設定。不過我覺得 Husky.Net 官方文件的 Getting Started 少了一些實務上的設定步驟,這會導致初學者不太容易一次就上手,所以我打算寫點文章來跟大家分享。

... 繼續閱讀 ...

開發 .NET 應用程式可利用 dotnet format 建立一致的程式碼風格

在團隊開發 .NET 專案時,維持一致且可自動化檢查的程式碼風格是降低溝通與維運成本的關鍵。這篇文章我打算示範 .NET SDK 提供的 dotnet format 命令列工具,搭配著 .editorconfig 程式碼風格定義檔,在本機與 CI 流程中快速「驗證」與「自動修復」格式問題,讓提交前後都能以同一套規則運作,減少程式碼審查雜訊並提升可讀性與穩定性。

... 繼續閱讀 ...

體驗 .NET 10 的超酷新功能:dotnet run app.cs

最近微軟釋出了 .NET 10 Preview 4 版本,這個版本正式推出了一個超酷的新功能,你現在可以在完全沒有 *.csproj 檔案的情況下,直接使用 dotnet run 來執行你的 C# 程式碼!先不論這件事有沒有意義,但這個功能確實會大幅簡化我們的開發流程,讓我們可以更快速地測試和執行 C# 程式碼。今天這篇文章我們就來體驗一下這個全新功能!

... 繼續閱讀 ...

如何在 .NET Core、.NET 5+ 與 ASP.NET Core 正確使用 Big5 編碼

由於從 .NET Core 1.0 開始,就沒有自動載入 BIG5 編碼的 Encoding 資料,所以你沒辦法直接透過 Encoding.GetEncoding("Big5") 取得 Encoding 物件。在 .NET Core 3.1 之前,還需要須額外安裝 System.Text.Encoding.CodePages 套件才行。不過,從 .NET 5 開始,這個套件成為了 .NET SDK 的一部分,不再需要額外安裝。但即便如此,你還是要特別執行一段註冊以使用此編碼。接下來,我們將深入探討如何註冊這些編碼並正確使用它們在不同的場景中。

... 繼續閱讀 ...

取得 .NET 8 應用程式的版本資訊必須注意的兩三事

我前陣子幫客戶開發一個 Windows Forms 應用程式,使用 .NET 8 來開發,不過在案子的最後一刻,客戶要求要加上一個「版本資訊」的功能,這個功能要顯示目前程式的版本號。這個功能實在是不常寫,沒想到還真的有點地雷,因為跟 .NET Framework 有點不太一樣了。這篇文章就來分享一下我在開發過程中遇到的問題,以及解決方法。

... 繼續閱讀 ...

從 .NET 7 開始就不鼓勵使用 .NET Generic Host 建立應用程式

這應該算是 .NET Core 的歷史包袱吧,任何軟體都一樣,沒有人可以預料未來的需求,所以當初設計的時候,多多少少一定會遇到一些不合理的地方。然而,因為當年 .NET Core 算是有承諾「絕對不會」有破壞性的 API 變更,所以一些早期設計不當的 API 全部都留下來了,也因為這樣,.NET 就需要設計一些新的 API 來取代「包裹」舊的 API,雖然會帶來一些困擾,但是只對老人困擾而已,對新人來說,這些都是「新」的 API,所以不會有任何問題。這篇文章我要來介紹 .NET 7 / 8 通常該如何初始化應用程式,以及跟舊版有什麼不一樣的地方。

... 繼續閱讀 ...

如何攔截並記錄 HttpClient 發出的所有 HTTP Request 與 Response 資料

在 .NET 要呼叫 REST API 時,最常使用的就屬 HttpClient 類別莫屬,但有時候真的想看他到底送出了什麼 HTTP 封包,或是收到了什麼 HTTP 回應 (原始內容),這時候就需要一個方法來攔截並記錄實際 HTTP 傳送的 Request 與 Response 封包內容。其實是有方法的,這篇文章就來介紹如何實作。

... 繼續閱讀 ...

如何透過 System.Text.Json 序列化輸出完整的 Unicode 字元

我最近在整理《重編國語辭典修訂本》最新版的資料檔,因為我預計輸出成跟 g0vmoedict-data 專案相容的 JSON 格式,而在輸出的時候卻發現這些中文字都被編碼了,但我希望能夠輸出成完整的 Unicode 字元。這才發現即便是 .NET 8 最新版,也無法輸出完整的 Unicode 字元,這篇文章就是記錄我如何解決這個問題的過程。

... 繼續閱讀 ...