The Will Will Web

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

如何在 .NET 透過 nuget.config 自訂 NuGet 套件來源

有時候我們會希望從本機硬碟安裝 NuGet 套件,有時候則是想要安裝公司內部發行的 NuGet 套件,我發現許多人都會透過 Visual Studio 去調整全域的 nuget.config 設定檔,但這樣很容易造成你在開啟其他不同專案的時候會無法成功還原套件的情況。另一方面,我們在 CI 的環境中,若需要指定自訂的 NuGet 套件來源,通常也都是透過建立 nuget.config 的方式來指定。這篇文章我將來說明如何在方案或專案中建立 nuget.config 檔案,並將該檔案加入到版控之中。

... 繼續閱讀 ...

使用 Code 128 字型建立 Code 128 (ISO/IEC 15417:2007) 條碼的注意事項

最近有專案需要在報表上顯示 Code 128 條碼,但負責這個功能的開發人員會遇到特定文字產生的條碼無法被掃描/辨識的問題。由於我之前沒有親手處理過 Code 128 條碼,所以藉此研究了一下 Code 128 條碼的產生過程,特別用這篇文章筆記一下整個過程。

... 繼續閱讀 ...

體驗全新 ASP.NET Core 6.0 專案範本與 C# 10 語言特性

我的 ASP.NET Core 6 開發實戰:從入門到進階 課程將在 2021/11/13 開始,就在 .NET 6.0 推出後 4 天。由於 .NET 6.0 與 C# 10 即將推出,全新的 Top-level statements 語言特性,可以大幅簡化 .NET 應用程式的啟動程式碼,這個變化自然也會影響到 ASP.NET Core 6.0 的啟動方式,許多 .NET Core 的老手看到全新的 Hosting Model (裝載模型) 可能會非常不適應,這篇文章主要用來解決大家的疑惑。

... 繼續閱讀 ...

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

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

... 繼續閱讀 ...

錯誤的 HintPath 也可以在 Visual Studio 中建置,但 CI 的時候可能不行

我在幫一個客戶 Code Review 並重構專案的時候,發現他們的專案在 Visual Studio 2019 都可以順利的建置專案,但是透過 Azure Pipelines 使用 MSBuild 建置卻會編譯失敗,錯誤訊息非常不清楚,真的是查了很久才想通問題的主因在哪裡,我覺得值得寫篇文章記錄一下。

... 繼續閱讀 ...

使用 MSBuild 建置方案檔(sln)與建置專案檔(csproj)的陷阱與注意事項

我一年大概都會幫幾家企業導入 Azure DevOps Server 平台,最近幫客戶導入的過程遇到了一個難題。一個方案檔中有 9 個專案,其中有 4 個 .NET Framework 4.7.2 類別庫專案、1 個 .NET Framework 4.7.2 的 ASP.NET Web Forms 專案、2 個 .NET Core 2.1 類別庫專案、1 個 .NET Standard 2.0 專案、2 個 .NET Core 2.1 類別庫專案、1 個 .NET Core 2.1 的 ASP.NET Core 專案。很少看到一個案子用這麼混搭的技術,而這個案子要做 CI/CD 確實也遇到了問題。這篇文章我將說明問題與解決方法!

... 繼續閱讀 ...

利用 SynchronizationContext 讓 ASP.NET 背景執行緒取用 HttpContext 資訊

我們在寫 ASP.NET (.NET Framework) 的時候,可能會需要利用非同步作業在背景執行一些工作,同時可能也需要偶爾取用 HttpContext 相關資訊。事實上當我們在 ASP.NET (.NET Framework) 使用 await 等待一個 Task 時,會自動紀錄當下的 SynchronizationContext,並在 Task 完成工作後,取得原始 執行緒 (Thread) 中的資訊。但是如果我們也想在 Task 中取用原本執行緒的內容 (例如 HttpContext 資訊),我們就需要學會如何自行利用 SynchronizationContext 來取用原始執行緒中的內容。今天這篇文章,我將透過一段簡易的程式碼與一個實際應用情境,說明 SynchronizationContext 的運作方式,讓你知道如何正確的使用它。

... 繼續閱讀 ...