LazowskiAnton · Extensions

BuildSmith

Co robiła kompilacja i dlaczego trwała tak długo. Po każdej kompilacji pasek stanu pokazuje jej czas i zmianę względem poprzedniej; okno Oś czasu kompilacji pokazuje wszystkie projekty na osi czasu — które szły równolegle, które czekały i jaka ścieżka krytyczna przesądziła o łącznym czasie.

Bezpłatnie · Visual Studio 2022 i 2026 · 14 języków interfejsu · bez telemetrii

Dlaczego BuildSmith

Okno „Oś czasu kompilacji”: wynik kompilacji i jej czas względem poprzedniej, po jednym pasku na projekt w kolejności uruchomienia, ścieżka krytyczna obrysowana na pomarańczowo

Gdzie poszedł czas

Okno „Dane wyjściowe” mówi, że kompilacja trwała 1 min 48 s. Oś czasu mówi, które projekty ten czas zajęły, które z nich szły obok siebie i na jaki łańcuch projektów musiała czekać cała kompilacja.

Porównanie z podobną kompilacją

Kompilacja Debug na main jest porównywana z poprzednią kompilacją Debug na main — a nie z ponowną kompilacją, kompilacją Release czy inną gałęzią. Dlatego ▲ 4.1 s coś znaczy.

Cicho

Żadne okno nie otwiera się samo, nic nie wyskakuje: jeden wiersz na pasku stanu po kompilacji. Gdy rejestrowanie jest wyłączone, BuildSmith naprawdę śpi — nawet nie nasłuchuje zdarzeń kompilacji.

Bezpłatnie, bez haczyków

Bez subskrypcji, bez wersji „pro”, bez zbierania danych i bez komunikatów w oknie „Dane wyjściowe” ani przy uruchamianiu. Historia zostaje na Twoim komputerze. Jedyne, o co kiedykolwiek poprosimy — gdy już przez jakiś czas będziesz z niego korzystać — to ocena w Marketplace. Działa w Visual Studio 2022 i 2026, x64 i ARM64.

Funkcje

Kompilacja w skrócie

Otwórz Kompilacja › Oś czasu kompilacji (także w Widok › Inne okna i na pasku narzędzi SmithWorks). Okno pokazuje ostatnią kompilację — lub dowolną z historii — z podsumowaniem u góry i jednym paskiem na projekt poniżej.

Okno „Oś czasu kompilacji”: nagłówek z wynikiem, czasem i zmianą, a pod nim projekty na osi czasu z obrysowaną ścieżką krytyczną, zakreskowanymi aktualnymi projektami i etykietką narzędzia

Czas na pasku stanu

Po każdej kompilacji pasek stanu Visual Studio pokazuje jej czas i zmianę względem poprzedniej porównywalnej kompilacji: ⏱ 1 min 48 s (▲ 4.1 s) — ▲ wolniej, ▼ szybciej. To jedyna rzecz, którą BuildSmith pokazuje sam, i można ją wyłączyć w ustawieniach.

Porównywalna oznacza ten sam rodzaj kompilacji (kompilacja lub ponowna kompilacja), tę samą konfigurację, tę samą platformę i tę samą gałąź Git. Jeśli takiej kompilacji jeszcze nie ma, pokazywany jest tylko czas.

Nagłówek

Górna część okna podsumowuje pokazaną kompilację:

Na ekranieZnaczenie
✓ 1 min 48 s  ▲ 4.1 s wobec poprzedniejWynik (powodzenie lub błąd), łączny czas i plakietka ze zmianą względem poprzedniej porównywalnej kompilacji; jej etykietka mówi, ile tamta kompilacja trwała i kiedy była.
Projekty: 14 · skompilowane: 9 · aktualne: 5 · z błędami: 1Ile projektów brało udział, ile naprawdę skompilowano, ile pominięto jako aktualne i ile się nie powiodło.
ścieżka krytyczna 1 min 31 s · Debug · Any CPU · mainDługość ścieżki krytycznej, a potem konfiguracja, platforma i gałąź Git kompilacji.
Wybór kompilacjiDowolna zarejestrowana kompilacja rozwiązania: oś czasu przełącza się na nią.
🏷 ⏻ ⚙🏷 nadaje etykietę pokazanej kompilacji, ⏻ włącza lub wyłącza rejestrowanie, ⚙ otwiera ustawienia.

Paski

Na ekranieZnaczenie
Niebieski pasekProjekt, który był kompilowany, po jednym wierszu na projekt w kolejności uruchomienia: pasek zaczyna się tam, gdzie projekt naprawdę się zaczął po starcie kompilacji, i jest tak długi, jak długo trwał. Nakładające się paski szły równolegle, więc widać, jak bardzo równoległa była kompilacja.
Pomarańczowy obrysŚcieżka krytyczna: łańcuch projektów, z których każdy czekał na poprzedni, przesądzający o łącznym czasie. Przyspieszenie któregoś z nich przyspiesza kompilację; pozostałe projekty szły równolegle.
Zakreskowany odcinekAktualny: pominięty, nic się w nim nie zmieniło.
Czerwony pasekKompilacja projektu się nie powiodła.
▲ 2.4 sObok każdego paska: jego czas oraz, jeśli jest zauważalna, zmiana względem tego samego projektu w poprzedniej porównywalnej kompilacji.

Najedź na pasek, aby zobaczyć szczegóły: ile trwał projekt, od kiedy do kiedy po starcie kompilacji, zmianę względem poprzedniej kompilacji i czy był na ścieżce krytycznej.

Okno może być otwarte podczas pracy: samo przechodzi do każdej nowej kompilacji. Karty Oś czasu, Porównanie i Historia są u góry.

Nigdy nie aktualne

Niektóre projekty są kompilowane przy każdej kompilacji, nawet gdy nic się w nich nie zmieniło. Za każdym razem kosztuje to kilka sekund i nikt tego nie zauważa. BuildSmith zauważa: nad osią czasu kompilacji przyrostowej pasek informuje, ile jest takich projektów i ile kosztują przy każdej kompilacji. Rozwija się w listę projektów; ich wiersze na osi czasu dostają znak ⟳.

Pasek nad osią czasu: 3 projekty nigdy nie są aktualne, 6.4 s przy każdej kompilacji; lista projektów i typowe przyczyny

Reguła: projekt jest wskazywany, gdy był kompilowany w każdej z ostatnich 3–5 kompilacji przyrostowych tej samej konfiguracji i gałęzi, a ponad połowa rozwiązania była aktualna. Ponowne kompilacje się nie liczą — tam wszystko jest kompilowane celowo.

Typowe przyczyny:

Naprawienie tego oszczędza ten czas przy każdej kompilacji. Pasek można wyłączyć w ustawieniach: Wskazuj projekty, które nigdy nie są aktualne.

Historia

Karta Historia wyświetla zarejestrowane kompilacje rozwiązania, od najnowszych, pogrupowane według dni. Każdy wiersz pokazuje godzinę, rodzaj kompilacji, konfigurację i gałąź, etykietę oraz pasek proporcjonalny do czasu kompilacji — wolna kompilacja od razu się wyróżnia.

Karta „Historia”: pole wyszukiwania, zakresy dat, zaznaczone kompilacje, etykiety, paski proporcjonalne do czasu kompilacji i menu kontekstowe

Znajdź kompilację

Wpisz tekst w polu wyszukiwania — każde słowo musi się znaleźć w etykiecie, gałęzi, konfiguracji lub rodzaju kompilacji. Zawęź według daty przyciskami Dziś, Wczoraj i dziś, 7 dni lub Wszystkie albo wybierz daty w kalendarzu (Daty…). Tylko z etykietą zostawia kompilacje, którym nadano etykietę.

Otwieranie, etykiety, zachowywanie, usuwanie

Kliknij kompilację (lub naciśnij Enter), aby otworzyć ją na osi czasu. Prawy przycisk myszy daje Otwórz na osi czasu, Etykieta…, Zachowaj (nigdy nie usuwaj) i Usuń. Klawisz Delete usuwa kompilację, a przez kilka sekund dostępne jest Cofnij. Menu ⋯ usuwa kompilacje starsze niż wybrana data, czyści historię tego rozwiązania lub wszystkich rozwiązań.

Zaznacz kompilacje, aby je porównać lub usunąć kilka naraz. Zaznacz z etykietą zaznacza każdą pokazaną kompilację z etykietą — najszybszy sposób, by porównać „przed” i „po”.

Jak długo kompilacje są przechowywane

Kompilacje są przechowywane tylko na tym komputerze, w %LocalAppData%\BuildSmith, osobna historia dla każdego rozwiązania — przez 1 dzień, 3 dni, 1 tydzień (domyślnie), 2 tygodnie lub 1 miesiąc. Starsze kompilacje są usuwane przy otwarciu rozwiązania lub po zakończeniu kompilacji. Kompilacje z etykietą i zachowane zostają niezależnie od wieku.

Etykiety

🏷 w nagłówku (lub Etykieta… w menu historii) nadaje kompilacji krótki tekst i kolor: jeden z pięciu albo własny, wybrany w małym selektorze z paletą i ostatnimi kolorami. Ostatnio używane etykiety są proponowane ponownie jednym kliknięciem, więc seria kompilacji może mieć wspólną etykietę.

Kompilacja z etykietą nigdy nie jest usuwana ze względu na wiek (chyba że wyłączysz Zachowuj kompilacje z etykietą). Zachowaj (nigdy nie usuwaj) przypina kompilację bez etykiety.

Rejestrowanie

⏻ w nagłówku decyduje, czy kompilacje są rejestrowane:

WybórCo się dzieje
Rejestruj kompilacjeDomyślnie: każda kompilacja jest mierzona i zapisywana w historii.
Nie dla tego rozwiązaniaTo rozwiązanie nie jest już rejestrowane; pozostałe nadal tak. Ustawienia wyświetlają listę takich rozwiązań z przyciskiem Rejestruj ponownie.
Wyłącz wszędzieBuildSmith śpi we wszystkich rozwiązaniach.

Uśpiony BuildSmith naprawdę nic nie robi: nie subskrybuje zdarzeń kompilacji, nie zapisuje niczego na pasku stanu ani na dysku. Historia zostaje, a okno proponuje Znów rejestruj kompilacje.

Porównywanie kompilacji

Karta Porównanie zestawia kompilacje obok siebie: czy poprawka pomogła, który projekt zwolnił po aktualizacji, jak zmieniał się czas kompilacji w ciągu tygodnia.

Karta „Porównanie”: kafelki kompilacji, trend czasów kompilacji i tabela projektów według kompilacji z kolorowymi zmianami, wykresami przebiegu i ścieżką krytyczną

Wybierz kompilacje

Zaznacz od 2 do 10 kompilacji na karcie Historia i naciśnij ⇄ Porównaj (N). Bez zaznaczeń karta „Porównanie” zestawia pokazaną kompilację z poprzednią porównywalną. Kompilacje pojawiają się u góry jako kafelki; ✕ usuwa kompilację z porównania.

Trend i tabela

Mały wykres pokazuje łączny czas każdej kompilacji. Pod nim tabela projekty × kompilacje: każda komórka jest pokolorowana według zmiany względem pierwszej kompilacji — cieplejszy kolor to wolniej, zielony to szybciej — z wykresem przebiegu, zmianą i ● tam, gdzie projekt był na ścieżce krytycznej. Projekty bez zauważalnej zmiany są zwinięte w … jeszcze N bez wyraźnej zmiany.

Tylko projekty, które Cię interesują

Projekty: … filtruje tabelę: Wszystkie projekty (N), Wyraźnie zmienione (N), Na ścieżce krytycznej (N) lub Tylko zaznaczone, z polem wyszukiwania. Filtr jest zapamiętywany dla każdego rozwiązania, a trend sumuje wtedy czas przefiltrowanych projektów — to trend Twoich projektów, a nie całego rozwiązania.

Jeden projekt we wszystkich kompilacjach

Kliknij projekt, aby zobaczyć jego paski w każdej porównywanej kompilacji; obrysowany pasek oznacza, że w tej kompilacji był na ścieżce krytycznej. ‹ Wszystkie projekty wraca.

Kopiowanie jako Markdown

⧉ Kopiuj umieszcza tabelę w takiej postaci, w jakiej ją widzisz — te same kompilacje, ten sam filtr — w schowku jako tabelę Markdown, gotową do pull requesta lub czatu. W widoku jednego projektu kopiuje ten projekt.

Ustawienia

Narzędzia › Opcje › SmithWorks › BuildSmith (lub ⚙ w oknie „Oś czasu kompilacji”). Każda opcja ma krótki opis tego, co robi.

OpcjaDomyślnie
Rejestruj kompilacjewł.
Nierejestrowane dla:Żadne rozwiązanie nie jest wyłączone.
Przechowuj kompilacje przez:1 tydzień
Zachowuj kompilacje z etykietąwł.
Czas na pasku stanuwł.
Wskazuj projekty, które nigdy nie są aktualnewł.
Proś o ocenę w Marketplacewł.

Wyczyść całą historię (rozwiązania: N, rozmiar)… usuwa zarejestrowane kompilacje wszystkich rozwiązań i pyta, czy zachować te z etykietą i zachowane. Na dole: Przywróć domyślne, Dokumentacja, Oceń w Marketplace i Wyślij opinię.

Ustawienia i historia są przechowywane w %LocalAppData%\BuildSmith.

Strona opcji BuildSmith
Strona opcji.

FAQ

Czy BuildSmith wysyła jakiekolwiek dane?

Nie. Czasy kompilacji są pobierane ze zdarzeń kompilacji Visual Studio i przechowywane na Twoim komputerze, w %LocalAppData%\BuildSmith. Bez żądań sieciowych, bez telemetrii.

Dlaczego obok czasu nie ma zmiany?

Nie ma jeszcze porównywalnej kompilacji: tego samego rodzaju (kompilacja lub ponowna kompilacja), konfiguracji, platformy i gałęzi. Skompiluj jeszcze raz, a zmiana się pojawi.

Czym dokładnie jest ścieżka krytyczna?

Łańcuchem projektów, na które kompilacja musiała czekać: każdy zaczynał się dopiero po zakończeniu poprzedniego. Jego długość to najkrótszy możliwy czas kompilacji z tymi projektami, niezależnie od liczby rdzeni. Przyspieszenie projektu spoza ścieżki krytycznej nie skraca kompilacji.

Po kompilacji okno pozostaje puste.

Sprawdź, czy rejestrowanie jest włączone (⏻ w oknie, Rejestruj kompilacje w ustawieniach) i czy tego rozwiązania nie ma na liście Nierejestrowane dla. Kompilacje uruchomione poza Visual Studio (dotnet build w wierszu poleceń) nie są rejestrowane.

Czy BuildSmith spowalnia kompilację?

Nie. Nasłuchuje początku i końca każdego projektu, które Visual Studio i tak zgłasza, a po kompilacji zapisuje jeden mały plik. Nie zmienia kompilacji ani jej rejestrowania.

Ile miejsca na dysku zajmuje historia?

Bardzo mało: kompilacja to krótka lista projektów z ich czasami. Ustawienia pokazują rozmiar obok Wyczyść całą historię, a stare kompilacje znikają same po wybranym okresie.

Gdzie zgłosić problem lub zaproponować funkcję?

Otwórz zgłoszenie w repozytorium Feedback na GitHubie — są tam formularze dla błędów i pomysłów (prosimy zmienić prywatne nazwy). Możesz też skorzystać z karty Q&A w Marketplace.

Historia zmian

1.0.0