[小菜一碟] Visual Studio 2019 16.11 版本的一個大亮點 - .NET Hot Reload

今年(2021 年)5 月的時候 .NET Blog 發佈了一篇文章 - Introducing the .NET Hot Reload experience for editing code at runtime,在介紹 Visual Studio 2019 16.11 的新功能 - .NET Hot Reload,當時 Visual Studio 2019 16.11 還在 Preview 1,最近終於正式更新了,我立即將 Visual Studio 2019 更新到 16.11 來體驗一下。

...繼續閱讀 »

[廚餘回收] Visual Studio 2017 的目標 Framework 不見 .NET Standard 2.0

.NET Standard 2.0 算是目前在 .NET 生態系裡面,如果要開發類別庫的話,在新穎跟通用之間取得平衡之下,大家折衷過後比較會選擇的版本,這一天我打開 Visual Studio 2017 要維護以前開發的一個 .NET Standard 2.0 專案,突然發現「目標 Framework」不見 .NET Standard 2.0 的蹤影。

...繼續閱讀 »

[料理佳餚] Windows Forms 三種 Binding 的連動方式:TwoWayBinding、OneWayBinding、OneWayToSourceBinding

日常的工作當中,還是難免遇到需要維護 Windows Forms 的程式,基本上 Windows Forms 控制項的互動能夠用 Binding 的方式去處理,我就儘量用 Binding 的方式去處理,讓我自己能夠有更多的精神放在商業邏輯上,這篇文章想跟大家分享 Windows Forms 的三種 Binding 的連動方式。

...繼續閱讀 »

[小菜一碟] 無意中發現 SSMS(SQL Server Management Studio)有一個「檢視相依性」的功能

如果我們接手維護一個資料庫,裡面的 Table、View、Stored Procedure、Function、Trigger 相依鏈錯綜複雜,想要定位發生問題的區塊,搞得像盜墓一樣,這天我無意間發現 SSMS(SQL Server Management Studio)有一個「檢視相依性」的功能,有助我們來釐清資料庫物件的相依鏈。

...繼續閱讀 »

[料理佳餚] Regular Expression(正則表達式)的比對「不包含」

如果說有什麼工具是在 IT 行業內不同領域都需要去學會的,我認為 Regular Expression(正則表達式)會是其中之一,而我們使用 Regular Expression 大都是去比對是否包含某個字或詞?鮮少遇到比對「不包含」的情境,我就我遇過的需求來介紹 Regular Expression 的比對「不包含」。

...繼續閱讀 »

[創意菜色] 如何利用 Google Docs 的語音輸入製作視訊會議的逐字稿?

要不是最近開了大量的視訊會議,不然我應該沒啥機會去研究這篇文章的主題,有一天我發現 Google Docs 有一個「語音輸入」的功能,加上以前我有嘗試著把音樂直接轉成輸入的音源,透過網路播放出去,原則上應該可以把視訊會議上講話的內容,丟給 Google Docs 讓它輸出成文字,我們就來看看行不行得通?

...繼續閱讀 »

[食譜好菜] 在 C# 中能將集合轉化為一切的擴充函式 - Aggregate

如果有一天,微軟讓大家在 C# 裡面 Enumerable 眾多的擴充函式當中選一個留下來,我想我會選 Aggregate(),Aggregate() 算是一個滿萬用的擴充函式,從 .NET Framework 3.5 開始就一直存在,它只有三個多載方法,要額外丟的參數最多也只要三個,結構上算是簡單,但運用起來卻能千變萬化。

...繼續閱讀 »

[食譜好菜] C# 兩個集合的 JOIN,一對一、一對多、單鍵值、多鍵值一次介紹。

不知道各位朋友在 C# 裡面,要將兩個集合 JOIN 起來使用時,是怎麼處理的? 假定我有一個 Employee 類別,有一個 Department 的屬性,Department 的內容需要透過另一個屬性 DepartmentId 到 Department 的集合當中去查找,如果各位朋友習慣上是使用類似下面寫法的話,可以嘗試改用另一種方法。

foreach (var employee in employees)
{
    employee.Department = departments.Single(dep => dep.Id == employee.DepartmentId);
}
...繼續閱讀 »