在 Visual Studio 的眾多擴充套件中,ReSharper 是使用最廣泛的 .NET 生產力工具之一。本文盤點它的核心功能、快速鍵、安裝方式與授權,以及幾個值得考量的取捨點。

什麼是 ReSharper?

ReSharper 是由 JetBrains 開發的 Visual Studio 擴充套件,核心定位是補強 Visual Studio 原生分析器的不足:它在整個方案層級(solution-wide)做靜態分析,而非僅限單一檔案,因此能找出跨專案的未使用公開成員、衍生型別關係,以及需要全域語意模型才能偵測的問題。

主要功能

即時程式碼分析

ReSharper 會在你輸入的同時持續分析整個方案,狀態列右下角的圓形指示燈反映目前的問題數量。常見偵測項目包括:

  • 潛在的 null 參照(搭配可為空參照型別標記)
  • 未使用的變數、參照與 using
  • 命名規則違反(可對應 .editorconfig 或 .DotSettings)
  • 可以簡化的 LINQ 表達式或型別轉換

重構工具

重構是 ReSharper 最被引用的強項,以下幾個是日常最常用的:

  • Rename(F2):跨所有檔案、包含字串字面量與 XML 文件中的符號名稱
  • Extract Method(Ctrl+Alt+M):選取程式碼片段後一鍵抽成方法,自動推斷參數與回傳型別
  • Inline Method:與 Extract 相反,把方法展開回呼叫點
  • Extract Interface:從現有類別提取介面,不用手動複製簽章
  • Safe Delete:刪除成員前先確認沒有其他地方使用

導覽

功能 快速鍵
Go to Everything(符號/檔案/類型全搜) Ctrl+T
Navigate To(宣告/實作/基底類別) Alt+`
Find Usages Alt+F7
快速修正 / 意圖選單 Alt+Enter
重構選單 Ctrl+Shift+R

Go to Everything(Ctrl+T)是使用頻率最高的功能,輸入縮寫即可模糊比對,不需要記得完整型別名稱。

程式碼產生與樣板

  • 輸入 propctorforeach 等縮寫後按 Tab,展開對應的 Live Template
  • 可自訂 Live Template,把團隊慣用的樣板存成縮寫
  • 可從方法呼叫點直接生成尚未存在的方法(「Create from usage」)

語言支援

C# 和 VB.NET 是功能最完整的。TypeScript、JavaScript、HTML、CSS、XAML、Razor、Blazor 有部分支援,但深度不及 C#。JSON 和 .editorconfig 也有基礎的語法提示。

Solution-Wide Analysis

這是 ReSharper 與 Roslyn 內建分析器最明顯的差異點之一:開啟 Solution-Wide Analysis 後,ReSharper 會把整個方案的所有型別關係載入記憶體,才能回答「這個公開方法真的沒有任何呼叫者嗎」這類問題。Roslyn 分析器基本上逐檔分析,無法可靠地偵測跨專案的未使用公開成員。

代價是記憶體:大型方案開啟此功能後,額外消耗幾百 MB 到 1 GB 以上的記憶體是常見情況。

安裝方式

ReSharper 不透過 Visual Studio 的「擴充功能 > 管理擴充功能」安裝,這條路徑找不到它。正確做法是:

方法一:獨立安裝程式

  1. 前往 jetbrains.com/resharper 下載 .exe 安裝程式
  2. 執行安裝程式,選擇要整合的 Visual Studio 版本(可同時選多個)
  3. 安裝完成後重新啟動 Visual Studio
  4. 首次啟動時輸入授權金鑰或登入 JetBrains 帳號啟用

方法二:JetBrains Toolbox App
如果同時使用多個 JetBrains 工具(Rider、DataGrip 等),Toolbox App 可以集中管理版本與更新,也支援回滾到舊版。

授權

ReSharper 採訂閱制,沒有買斷選項,但訂閱包含一個永久回退授權(fallback license),代表即使訂閱到期,仍可繼續使用授權到期當下的版本。

方案 定價(2024) 適用對象
Individual(個人) 約 USD 139/年 個人以私款購買並自用
Commercial(商業) 約 USD 349/年(續約有折扣) 公司/組織購買

試用版提供 30 天免費試用,需要 JetBrains 帳號登入,不需要填信用卡。

Individual 與 Commercial 的差別純粹是使用主體,功能完全相同,沒有所謂「商業版提供版本控管功能」這種說法——版控是 Visual Studio 內建的,與 ReSharper 授權類型無關。

ReSharper vs 內建 Roslyn 分析器

VS 2022 內建的 Roslyn 分析器近年來進步幅度不小,值得在付費前評估實際差距:

  • ReSharper 強在:Solution-Wide Analysis、大量開箱即用的檢查規則(超過 2,500 條)、重構廣度、跨型別層級的導覽
  • Roslyn 分析器強在:零成本、無額外記憶體負擔、可與 CI 管線整合、第三方 analyzer 套件(Roslynator、StyleCop 等)生態系豐富
  • 實務建議:個人專案或小型方案,Roslynator 加上 VS 內建分析器通常夠用;大型企業方案、重度重構需求、或團隊希望統一 .DotSettings 風格檔的情境,ReSharper 的差距才明顯

ReSharper vs Rider

如果你的主要工作是 .NET,也可以考慮直接改用 JetBrains Rider,而不是在 Visual Studio 上加裝 ReSharper:

  • Rider 是獨立 IDE,底層整合 ReSharper 引擎,不需要 Visual Studio
  • Rider 在大型方案的回應速度通常優於「VS + ReSharper」組合
  • Rider 訂閱包含在 All Products Pack 中,若已訂閱則不需額外付費

如果你的工作流依賴特定 VS 擴充套件,或需要 Visual Studio 才能存取的功能(例如某些企業 DevOps 整合),才比較需要維持在 VS + ReSharper 的組合。

效能考量

ReSharper 是重量級工具,幾個實際的考量點:

  • 記憶體:官方最低需求約 4GB 可用記憶體,推薦 8GB 以上;大型方案開啟 Solution-Wide Analysis 時,16GB 整機記憶體才不容易見底
  • SSD:ReSharper 會在方案目錄下建立快取(_ReSharper.Caches),機械硬碟讀寫速度會明顯拖慢索引時間
  • 按需停用分析:可在狀態列圓形指示燈右鍵,暫時切到「Heuristic」或關閉部分分析,換取回應速度

使用技巧

  • Alt+Enter 是核心習慣:游標停在任何標記為問題的程式碼上按 Alt+Enter,會出現 ReSharper 建議的修正與重構清單,大多數操作從這裡進入比記快速鍵快
  • 團隊共享設定:把 .DotSettings 檔加入版本控制,可讓所有人共用命名規則、程式碼樣式與分析嚴重等級設定
  • Solution-Wide Analysis 按需開啟:不需要一直開著,在 code review 前或重構前開啟掃一遍即可,平時可關閉節省資源