常用套件整理
年紀大了,記憶不好,每次安裝 Visual Studio 都要花時間查一下之前安裝了哪些套件,及套件功能是什麼,所以寫一篇文章記錄下來。
Visual Studio 的擴充套件
- 「Productivity Power Tools」和「Web Essentials」以前都是單一套件,後續不知哪一版本的 Visual Studio 開始將其底下各功能改為獨立套件,變成可選擇獨立安裝各功能套件,或藉由安裝同捆包來一次安裝。
- 安裝這類同捆包時,是在安裝時會忽略已獨立安裝的套件。
- 早期我是直接安裝同捆包,後續因為以下原因,改成安裝獨立套件:
- 由於 Visual Studio 2022 改為 64 位元時,很多套件都無法支援,或是有些功能改為 Viusal Studio 內建,(「Zen-Coding」),導致同捆包裡有在使用套件比重有逐漸降低的跡象。
- 以前安裝同捆包,卻沒注意同捆包有哪些套件,導致很多功能我以為是內建的,結果是擴充套件的功能,而不同時期安裝的同捆包,實際安裝的套件都不一樣,有可能是新版的 Visual Studio 尚未支援,或是已不列為同捆包的一部分,像是「Web Compiler」和「Bundler & Minifier」後期就變成是要獨立安裝的套件(忘了是 Viusal Studio 2015 還是 2017 開始),而移除同捆包時,似乎不會移除底下相關套件,最後導致只安裝同捆包也不確定安裝什麼,倒不如把需要安裝的套件列清單來安裝。
Visual Studio 設定
- 環境:
- 一般:
- 為不同像素密度的螢幕最佳化呈現方式:當遇到操作 Visual Studio 發現滑鼠指標會亂跑,比較常發現在操作 SQL 檔時,關掉此設定可以解決。
- 字型和色彩:字型選擇等寬字體「Consolas」,大小選 12。
- 索引標籤和視窗:
- 設定索引標籤配置:如果有外接大螢幕,可以改為「左」或「右」。
- 文件索引標籤著色方式:打勾。
- 在文件索引標籤上顯示「關閉」按鈕、在文件中顯示「關閉」按鈕:預設只會勾前者。
- 擴充功能:
- 依使用者延伸模組
- 如果擴充套件有需要指定特定版本,取消打勾「自動更新延伸模組」。
- 文字編輯器:
- 一般:顯示全部打勾。
- C#:
- 進階:
- Using 指示詞:.NET Framework 時期,習慣會開啟「排序 Using 時,先放置 'System' 指示詞」,所以如果沒設定 editorconfig 時,最好確認團隊設定是否一致。
- 大綱:開啟「顯示程序行分隔符號」:這樣方法間和屬性間,只要有空白行,都會有白線分隔。
- 淡出:啟用設定,提醒是否有多餘的 Using 和 變數。
- 編輯器說明:「為重新指派的變數加上底線」:方便確認變數是否有被多次指派。
NuGet 套件
- Microsoft Packages:
- Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation:動態編譯 ASP.NET Core Razor 檔案。
- Entity Framework Core:
- Microsoft.EntityFrameworkCore:EF Core 基本功能。
- Microsoft.EntityFrameworkCore.SqlServer:SQL Server 資料庫提供者,其它資料庫請參考「資料庫提供者」:常見的關係資料庫功能。
- Microsoft.EntityFrameworkCore.Design:Entity Framework 設計工具,執行像是 Migration 之類的功能。
- Microsoft.EntityFrameworkCore.Relational:常見的關係資料庫功能。
- Microsoft.EntityFrameworkCore.Tools:主控台工具。
非建置 Entity 的專案,正常來說只要安裝以下套件就好:
- Microsoft.EntityFrameworkCore。
- Microsoft.EntityFrameworkCore.SqlServer 或其它資料庫提供者。
- Microsoft.EntityFrameworkCore.Relational。
- Microsoft.AspNet.WebApi.Client:簡化 HttpClient 的操作。
- CommunityToolkit.Mvvm:用來簡化 MVVM 架構開發的套件。
- Autofac:DI 套件。
- AutoMapper:將 Object 值映射到另一個 Object。
- Dapper:輕量化的 ORM 套件。
- FluentValidation:建構強類型驗證規則。
- Humanizer:功能非常強大的字串轉換工具,可將時間、數字轉換成口語化英文、英文單複數轉轉換,及各種字句 Format。
- CsvHelper:CSV 套件。
- NPOI:免費的 Excel 套件。
- 原本還有另外一個功能更強大 Excel 套件是 EPPlus,但是它只有在 EPPlus 4 以前可以免費使用,EPPlus 5 以後,授權改為「Polyform Noncommercial 1.0.0」,無法用於商業環境,但如果只是個人使用則沒問題。
- NPOI 有支援「XLS」格式,EPPlus 僅支援「XLSX」,但個人經驗,目前 EPPlus 支援功能較為多一點。
- 如果只使用 Zip 的壓縮、解壓縮,且未使用 NPOI 的情況下,建議使用 DotNetZip 就好,由於 NPOI 相依於 SharpZipLib,所以如果有裝 NPOI 的情況下,自行評估是否要在專案裝兩個壓縮套件。
- 有些壓縮作法是在主機上放置如「7z.exe」等壓縮軟體,在 C# 使用 Command Line 來執行軟體進行壓縮,但如果檔案有加密要求時,就因為必須要在主機產生檔案(違反資料不落地原則),且壓縮失敗或壓縮完刪檔失敗時,就會在主機殘留有明文內容的檔案,造成資訊外流之風險。
- .NET 本身也有支援
System.IO.Compression
處理壓縮相關功能。
Fluent Assertions 8.0 開始,商業用途需購買商業許可證。
- GitVersion 設定較為複雜,可以針對分支建立、合併與不同的分支名稱等來建立各版本號規則,MinVer 則是直接靠設定 Git Tag 來決定版本號。
異動歷程
- 2025-04-06:
- 增加「自動更新延伸模組」設定說明。
- 移除「Code Cleanup on Save」,Visual Studio 2022 已經內建很久,不用特別列出來。
- 更新部分套件的說明。