BuildSmith
建置做了什麼、為什麼花了這麼久。每次建置後,狀態列會顯示所用時間及與上次相比的變化;建置時間軸視窗則把每個專案都放在時間軸上——哪些平行執行、哪些在等待,以及決定總時間的關鍵路徑。
免費 · Visual Studio 2022 和 2026 · 14 種介面語言 · 無遙測
為什麼選擇 BuildSmith

時間花在哪裡
「輸出」視窗只告訴您建置花了 1 分 48 秒。時間軸則告訴您是哪些專案用掉了這些時間、哪些專案同時執行,以及整個建置必須等待哪一條專案鏈。
與同類建置比較
main 上的 Debug 建置會與 main 上的上一次 Debug 建置比較——而不是與重建、Release 建置或其他分支比較。所以 ▲ 4.1 秒是有意義的。
安靜
不會自動開啟視窗,也沒有任何彈出視窗:建置後狀態列中只有一行。關閉記錄後,BuildSmith 會真正休眠——連建置事件都不接收。
免費,沒有附加條件
沒有訂閱、沒有「Pro」版、不收集資料,也不會在「輸出」視窗或啟動時顯示訊息。歷程記錄只保存在您的電腦上。我們唯一的請求是:在你用過一段時間之後,到 Marketplace 給個評分。支援 Visual Studio 2022 和 2026,x64 和 ARM64。
功能
- 每次建置後在狀態列中顯示時間,以及與上一次可比較建置相比的變化:
⏱ 1 min 48 s (▲ 4.1 s)。 - 建置時間軸視窗:依開始順序每個專案一條橫條,標出關鍵路徑,最新的專案以斜線表示,失敗的專案顯示為紅色,每條橫條旁顯示與上次建置相比的變化。
- 從未處於最新狀態的專案:即使方案大部分都是最新的,每次累加建置仍會建置的專案,以及它們每次建置的耗時。
- 方案每次建置的歷程記錄,預設保留一週:搜尋、日期範圍、行事曆,以及一眼就能看出哪次建置較慢的橫條。
- 標籤——「修正前」、「新 SDK」——可選五種色彩之一或自訂色彩;有標籤或標記為保留的建置永遠不會因過期而刪除。
- 比較 2 到 10 次建置:總時間的趨勢,以及含彩色變化、走勢圖和關鍵路徑的專案 × 建置表格——可複製為 Markdown 用於提取要求。
- 不必解除安裝即可關閉:可針對單一方案或全部關閉;歷程記錄會保留。
建置一覽
開啟建置 › 建置時間軸(也可在檢視 › 其他視窗和 SmithWorks 工具列中找到)。視窗會顯示最近一次建置——或歷程記錄中的任一次建置——頂端是摘要,下方每個專案一條橫條。

狀態列中的時間
每次建置後,Visual Studio 的狀態列會顯示所用時間及與上一次可比較建置相比的變化:⏱ 1 min 48 s (▲ 4.1 s)——▲ 表示變慢,▼ 表示變快。這是 BuildSmith 唯一會主動顯示的內容,而且可以在設定中關閉。
可比較是指建置類型(建置或重建)、組態、平台和 Git 分支都相同。如果還沒有這樣的建置,就只顯示時間。
標頭
視窗頂端彙總了目前顯示的建置:
| 顯示內容 | 意義 |
|---|---|
| ✓ 1 分 48 秒 較上次 ▲ 4.1 秒 | 結果(成功或失敗)、總時間,以及顯示與上一次可比較建置相比變化的徽章;徽章的工具提示會說明那次建置花了多久、是在什麼時候。 |
| 14 個專案 · 已建置 9 · 最新 5 · 失敗 1 | 參與的專案數、實際建置的數量、因已是最新而略過的數量,以及失敗的數量。 |
| 關鍵路徑 1 分 31 秒 · Debug · Any CPU · main | 關鍵路徑的長度,接著是該建置的組態、平台和 Git 分支。 |
| 建置選擇器 | 可選擇方案中任一次已記錄的建置,時間軸會切換到該建置。 |
| 🏷 ⏻ ⚙ | 🏷 為目前顯示的建置加上標籤,⏻ 開啟或關閉記錄,⚙ 開啟設定。 |
橫條
| 顯示內容 | 意義 |
|---|---|
| 藍色橫條 | 已建置的專案,依開始順序每個專案一列:橫條從建置開始後該專案實際開始的位置起始,長度即其耗時。互相重疊的橫條表示平行執行,因此可以看出建置實際的平行程度。 |
| 橘色外框 | 關鍵路徑:決定總時間的專案鏈,每個專案都要等待前一個。讓其中任何一個變快,建置就會變快;其他專案都是在一旁同時執行的。 |
| 斜線短條 | 最新:其中沒有任何變更,已略過。 |
| 紅色橫條 | 專案建置失敗。 |
| ▲ 2.4 秒 | 每條橫條旁:其耗時,以及在變化明顯時,與上一次可比較建置中同一專案相比的變化。 |
將滑鼠停留在橫條上可查看詳細資料:專案耗時、在建置開始後從何時到何時、與上次建置相比的變化,以及是否位於關鍵路徑上。
工作時可以一直開著這個視窗:每次有新的建置都會自動切換過去。頂端有時間軸、比較和歷程記錄索引標籤。
從未處於最新狀態的專案
有些專案即使沒有任何變更,每次建置也都會被建置。每次只多花幾秒,沒人會注意到。BuildSmith 會注意到:在累加建置的時間軸上方,有一條提示列說明這類專案有幾個、每次建置要花多少時間。展開後會列出這些專案;它們在時間軸上的列會加上 ⟳ 標記。

規則:如果某個專案在同一組態和分支最近 3 到 5 次累加建置中每次都被建置,而當時方案中超過一半是最新的,就會被指出。重建不計在內——那時所有專案都是刻意重新建置的。
常見原因:
- 某個檔案設定了複製到輸出目錄:永遠複製——改為有更新時才複製就夠了;
- 建置前或建置後事件修改了專案所依賴的檔案;
- 即使來源未變更,每次建置都會重新產生的程式碼。
修正後,每次建置都能省下這些時間。可以在設定中關閉這條提示列:指出從未處於最新狀態的專案。
歷程記錄
歷程記錄索引標籤會列出方案已記錄的建置,最新的在前,依日期分組。每列顯示時間、建置類型、組態和分支、標籤,以及與建置時間成比例的橫條——較慢的建置一眼就能看出來。

尋找建置
在搜尋方塊中輸入——每個字詞都必須出現在標籤、分支、組態或建置類型中。可用今天、昨天和今天、7 天或全部依日期縮小範圍,也可以在行事曆中選擇日期(日期…)。僅限有標籤的只保留您加上標籤的建置。
開啟、加上標籤、保留、刪除
按一下某次建置(或按 Enter)即可在時間軸中開啟。按右鍵可使用在時間軸中開啟、標籤…、保留(永不刪除)和刪除。按 Delete 鍵刪除建置,幾秒內可復原。⋯ 選單可刪除早於某個日期的建置,或清除此方案或所有方案的歷程記錄。
勾選建置即可比較它們,或一次刪除多個。勾選有標籤的會勾選目前顯示的所有有標籤的建置——這是比較「修正前」和「修正後」最快的方法。
建置保留多久
建置只保存在這台電腦上的 %LocalAppData%\BuildSmith 中,每個方案一份歷程記錄——保留 1 天、3 天、1 週(預設)、2 週或 1 個月。較舊的建置會在開啟方案或建置結束時刪除。有標籤和標記為保留的建置無論多舊都會保留。
標籤
標頭中的 🏷(或歷程記錄選單中的標籤…)可為建置加上一段簡短文字和一種色彩:五種色彩之一,或從含調色盤和最近使用色彩的小型選擇器中選擇自訂色彩。最近使用的標籤只要按一下即可再次使用,因此一系列建置可以共用同一個標籤。
有標籤的建置永遠不會因過期而刪除(除非您關閉保留有標籤的建置)。保留(永不刪除)可在不加標籤的情況下固定一次建置。
記錄
標頭中的 ⏻ 用於選擇是否記錄建置:
| 選項 | 效果 |
|---|---|
| 記錄建置 | 預設:每次建置都會計時並保存到歷程記錄中。 |
| 此方案不記錄 | 不再記錄此方案,其他方案仍會記錄。設定中會列出這些方案,並提供重新記錄。 |
| 全部關閉 | BuildSmith 在所有方案中休眠。 |
休眠時,BuildSmith 真正什麼也不做:不訂閱建置事件,不向狀態列或磁碟寫入任何內容。歷程記錄會保留,視窗中會提供重新記錄建置。
比較建置
比較索引標籤把多次建置並排放在一起:修正是否有效、更新後哪個專案變慢了、一週內建置時間如何變化。

選擇建置
在歷程記錄中勾選 2 到 10 次建置,然後按 ⇄ 比較 N 個。如果沒有勾選,比較會將目前顯示的建置與上一次可比較建置進行比較。這些建置會以標記的形式顯示在頂端;✕ 可將其從比較中移除。
趨勢和表格
一張小圖表顯示每次建置的總時間。下方是專案 × 建置的表格:每個儲存格依與第一次建置相比的變化著色——越暖色越慢,綠色表示較快——並顯示走勢圖、變化值,專案位於關鍵路徑上時還會顯示 ●。沒有明顯變化的專案會摺疊到… 另外 N 個無明顯變化中。
只看您關心的專案
專案:…用於篩選表格:所有專案(N)、明顯變化(N)、關鍵路徑上(N)或僅勾選的專案,並附有搜尋方塊。篩選條件會依方案記住,此時趨勢會加總篩選後專案的時間——是您的專案的趨勢,而不是整個方案的趨勢。
跨建置檢視單一專案
按一下某個專案,可檢視它在每次所比較建置中的橫條;有外框的橫條表示它位於該次建置的關鍵路徑上。‹ 所有專案可返回。
複製為 Markdown
⧉ 複製會把您看到的表格——相同的建置、相同的篩選條件——以 Markdown 表格形式放到剪貼簿上,可直接用於提取要求或聊天。在單一專案檢視中則複製該專案。
設定
工具 › 選項 › SmithWorks › BuildSmith(或建置時間軸視窗中的 ⚙)。每個選項都有簡短說明,介紹它的作用。
| 選項 | 預設值 |
|---|---|
| 記錄建置 | 開啟 |
| 不記錄的方案: | 沒有關閉任何方案。 |
| 建置保留時間: | 1 週 |
| 保留有標籤的建置 | 開啟 |
| 在狀態列中顯示時間 | 開啟 |
| 指出從未處於最新狀態的專案 | 開啟 |
| 請求在 Marketplace 上評分 | 開啟 |
清除所有歷程記錄(N 個方案,大小)…會刪除所有方案已記錄的建置,並詢問是否保留有標籤和標記為保留的建置。底部有重設為預設值、文件、在 Marketplace 上評價和傳送意見反應。
設定和歷程記錄保存在 %LocalAppData%\BuildSmith 中。

常見問題
BuildSmith 會傳送任何資料嗎?
不會。建置時間取自 Visual Studio 的建置事件,並保存在您電腦上的 %LocalAppData%\BuildSmith 中。沒有網路要求,也沒有遙測。
為什麼時間旁邊沒有顯示變化?
因為還沒有可比較的建置:類型(建置或重建)、組態、平台和分支都相同的建置。再建置一次,變化就會出現。
關鍵路徑到底是什麼?
建置必須等待的專案鏈:每個專案都在前一個結束後才開始。無論您有多少個核心,它的長度就是這些專案所能達到的最短建置時間。加快不在關鍵路徑上的專案並不能縮短建置時間。
建置後視窗仍然是空的。
請檢查記錄是否已開啟(視窗中的 ⏻,設定中的記錄建置),以及此方案是否不在不記錄的方案清單中。在 Visual Studio 之外啟動的建置(命令列中的 dotnet build)不會被記錄。
BuildSmith 會拖慢建置嗎?
不會。它只接收 Visual Studio 本來就會回報的每個專案的開始和結束,並在建置後寫入一個小檔案。它不會變更建置或其記錄方式。
歷程記錄會占用多少磁碟空間?
非常少:一次建置只是一份簡短的專案及其時間清單。設定中會在清除所有歷程記錄旁顯示大小,舊的建置會在所選期限過後自動刪除。
要在哪裡回報問題或提出功能建議?
請在 GitHub 上的 Feedback 存放庫中建立 issue——那裡有用於回報錯誤和提出建議的表單(如有私密名稱,請先替換)。也可以使用 Marketplace 上的 Q&A 索引標籤。
變更記錄
1.0.0
- 首次發行:狀態列中的建置時間及其變化,含關鍵路徑的建置時間軸視窗,從未處於最新狀態的專案,含搜尋、日期和標籤的歷程記錄,最多 10 次建置的比較並可複製為 Markdown,依方案開啟或關閉記錄,SmithWorks 工具列,一次性的評分請求。