LazowskiAnton · Extensions

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。

功能

建置一覽

開啟建置 › 建置時間軸(也可在檢視 › 其他視窗和 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 個專案從未處於最新狀態,每次建置 6.4 秒;專案清單和常見原因

規則:如果某個專案在同一組態和分支最近 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 選項頁面
選項頁面。

常見問題

BuildSmith 會傳送任何資料嗎?

不會。建置時間取自 Visual Studio 的建置事件,並保存在您電腦上的 %LocalAppData%\BuildSmith 中。沒有網路要求,也沒有遙測。

為什麼時間旁邊沒有顯示變化?

因為還沒有可比較的建置:類型(建置或重建)、組態、平台和分支都相同的建置。再建置一次,變化就會出現。

關鍵路徑到底是什麼?

建置必須等待的專案鏈:每個專案都在前一個結束後才開始。無論您有多少個核心,它的長度就是這些專案所能達到的最短建置時間。加快不在關鍵路徑上的專案並不能縮短建置時間。

建置後視窗仍然是空的。

請檢查記錄是否已開啟(視窗中的 ⏻,設定中的記錄建置),以及此方案是否不在不記錄的方案清單中。在 Visual Studio 之外啟動的建置(命令列中的 dotnet build)不會被記錄。

BuildSmith 會拖慢建置嗎?

不會。它只接收 Visual Studio 本來就會回報的每個專案的開始和結束,並在建置後寫入一個小檔案。它不會變更建置或其記錄方式。

歷程記錄會占用多少磁碟空間?

非常少:一次建置只是一份簡短的專案及其時間清單。設定中會在清除所有歷程記錄旁顯示大小,舊的建置會在所選期限過後自動刪除。

要在哪裡回報問題或提出功能建議?

請在 GitHub 上的 Feedback 存放庫中建立 issue——那裡有用於回報錯誤和提出建議的表單(如有私密名稱,請先替換)。也可以使用 Marketplace 上的 Q&A 索引標籤。

變更記錄

1.0.0