The Will Will Web

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

如何在舊版的 .NET Core 專案使用不支援當前目標框架的 NuGet 套件

我們最近有個維護案,其技術架構是採用已經 EOS (產品結束支援) 的 .NET Core 2.1 版本,由於客戶沒有預算可以升級框架版本,所以只能持續在現有的不受支援的 .NET Core 版本上新增功能。因為本次專案需求正好要用到一個支援 .NET Standard 2.0 的 MeiliSearch 套件,理論上應該支援 .NET Core 2.1 的,但卻遇到了無法編譯的狀況。本篇文章我就來說說這種狀況的解決方法。

... 繼續閱讀 ...

如何在 Ubuntu Linux 解除安裝 .NET SDK 或 Runtime 任意版本

雖然 .NET 有個 Uninstall Tool 可以用來解除安裝任何 .NET / .NET Core 版本,但是目前依然不支援 Linux 版本,可能是 Linux 生態實在是太複雜了,所以一直沒有提供好用簡便的反安裝工具。今天這篇文章我將分享幾個好用的命令,幫助你快速解除安裝現有的 .NET SDK 與 Runtime 版本。

... 繼續閱讀 ...

如何使用 .NET CLI 快速產生 ASP․NET Core 的 Controllers 與 Views 程式碼

我們在 Visual Studio 2019 開發 ASP․NET Core 的時候,都可以透過 [加入] / [控制器] 的方式,很便利的快速產生 Controllers 與 Views 程式碼,如果已經有現成的 Models 模型類別存在,還能快速的完成 CRUD 等實作。可惜在 Visual Studio Code 裡面,似乎就沒有相對應的工具可用,這對使用 macOS 或 Linux 的開發者來說,就顯得有點不太方便。不過,微軟官方其實有提供一套 dotnet-aspnet-codegenerator .NET CLI 全域工具,所做的事情跟 Visual Studio 2019 在做的事情完全一樣,本篇文章就來說說這套工具的用法,以及常見的地雷與注意事項。

... 繼續閱讀 ...

如何在 EF Core 3.1 的模型驗證方法中注入 ServiceCollection 中的服務

由於 .NET Core 大量的使用 DI 技術,所有註冊到 DI 容器(ServiceCollection)的服務,幾乎都可以用「注入」的方式取得物件。只不過有些類別不容易用建構式注入的方式取得服務,這篇文章將分享如何在 EF Core 3.1 的模型驗證方法中注入 ServiceCollection 裡的任何服務。

... 繼續閱讀 ...

如何在 EF Core 3.1 的 Code First 進行資料庫移轉時指定資料庫定序

最近在我的台灣 .NET 技術愛好者俱樂部臉書社團有人問到如何在 EF Core 3.1 的 Code First 進行資料庫移轉時指定資料庫定序 (Database Collation)。我自己也嘗試了一下搜尋,網路上確實都找不到相關資料,但我覺得「理論上」應該很容易辦到,因此自己實驗了一下,也研究出方法,這篇文章將分享我的實際作法。

... 繼續閱讀 ...

當 .NET Core 執行在 Linux 或 Docker 容器中如何優雅的結束

當我們將 .NET Core 跑在 Linux 或 Docker 容器中,我們不但希望程式可以穩定的執行,當程式需要結束的時候,更應該考慮如何「優雅的結束」(Graceful Shutdown)。這部分資訊很難在 docs.microsoft.com 或 GitHub 原始碼專案中找到,本篇文章將分享 .NET Core 如何捕捉作業系統送出的 TERM 訊號,在關閉程式前可以妥善處理程式結束前該做的準備。

... 繼續閱讀 ...

如何快速建立 Oracle Database Server 12c R2 資料庫容器並建立使用者

最近越來越多 ASP.NET Core 企業內訓需求,有客戶提到希望能在上課的時候展示 Entity Framework Core 與 Oracle 資料庫的整合能力,我第一時間就想到要在本機安裝 Oracle 資料庫容器起來,快速建立可開發測試的環境。不過,雖然建立 Oracle 資料庫容器相當簡單方便,但不太熟悉 Oracle 資料庫特性的我,卻連第一步「建立使用者」都沒辦法成功,錯誤訊息也相當難以理解,花了一些時間才找到解決之道。

... 繼續閱讀 ...

如何在 VSCode 設定完整的 .NET Core 建置、發行與部署工作

現在越來越多專案改用 .NET Core 進行開發,而且大部分都部署在 Linux 平台,不過開發環境一直都是在 Windows 平台之上,要怎樣有效率的整合本地端的開發與建置工作,甚至於設定可以輕鬆將發行檔案到遠端的部署流程,都是一關關的考驗。本篇文章我打算分享我這邊 VSCode 的設定方式,看我如何將常見的命令自動化。

... 繼續閱讀 ...

如何將 SCD 部署的 .NET Core 應用程式封裝單一可執行檔 (Warp)

我們知道 .NET Core 應用程式有兩種部署方式,一種叫 FDD (框架相依的部署),另一種叫 SCD (自封式部署)。當使用 SCD 部署的時候,可以直接指定平台(RID)進行封裝,不過缺點是檔案數量檔案大小都非常驚人,唯一的好處就是目的電腦不用安裝 .NET Core Runtime 就能執行程式。本篇文章我將介紹一套用 Rust 程式語言寫成的 Warp 工具,幫助你將檔案封裝成單一執行檔。

... 繼續閱讀 ...

如何在 .NET Core 主控台專案中使用 DI (相依注入) 並取得 ILogger 服務

速度快錯了嗎!疑?這篇文章的起頭好怪。因為今天在寫 .NET Core 程式的時候,一份很簡單的程式碼,卻怎樣都無法正確執行,嘗試了各種寫法還是鬼打牆,寫到有點懷疑人生。今天我就順便把 .NET Core 中設定 DI 與使用 ILogger 物件的過程詳細交代一遍,請看官務必看到最後喔!

... 繼續閱讀 ...