LazowskiAnton · Extensions

BuildSmith

Ce qu’a fait votre génération et pourquoi elle a pris ce temps. Après chaque génération, la barre d’état affiche sa durée et l’écart avec la précédente ; la fenêtre Chronologie de génération place chaque projet sur une chronologie — ceux qui ont tourné en parallèle, ceux qui ont attendu, et le chemin critique qui a fixé la durée totale.

Gratuit · Visual Studio 2022 et 2026 · 14 langues d’interface · aucune télémétrie

Pourquoi BuildSmith

La fenêtre Chronologie de génération : le résultat de la génération et sa durée comparée à la précédente, une barre par projet dans l’ordre de démarrage, le chemin critique entouré en orange

Où le temps est passé

La fenêtre Sortie indique que la génération a pris 1 min 48 s. La chronologie indique quels projets l’ont pris, lesquels ont tourné côte à côte, et quelle chaîne de projets toute la génération a dû attendre.

Comparée à une génération du même type

Une génération Debug sur main est comparée à la génération Debug précédente sur main — pas à une régénération, à une génération Release ni à une autre branche. Ainsi, ▲ 4.1 s veut vraiment dire quelque chose.

Discrète

Aucune fenêtre ne s’ouvre d’elle-même, rien ne surgit : une seule ligne dans la barre d’état après la génération. Quand l’enregistrement est désactivé, BuildSmith dort vraiment — il n’écoute même pas les événements de génération.

Gratuit, sans contrepartie

Ni abonnement, ni version « pro », ni collecte de données, ni messages dans la fenêtre Sortie ou au démarrage. L’historique reste sur votre ordinateur. La seule chose que nous vous demanderons — quand vous l’aurez utilisée pendant un certain temps — c’est une note sur le Marketplace. Fonctionne sous Visual Studio 2022 et 2026, x64 et ARM64.

Fonctionnalités

La génération d’un coup d’œil

Ouvrez Générer › Chronologie de génération (aussi dans Affichage › Autres fenêtres et sur la barre d’outils SmithWorks). La fenêtre affiche la dernière génération — ou n’importe quelle génération de l’historique — avec un résumé en haut et une barre par projet en dessous.

La fenêtre Chronologie de génération : l’en-tête avec le résultat, la durée et l’écart, puis les projets sur une chronologie avec le chemin critique entouré, les projets à jour hachurés et une info-bulle

La durée dans la barre d’état

Après chaque génération, la barre d’état de Visual Studio affiche sa durée et l’écart avec la génération comparable précédente : ⏱ 1 min 48 s (▲ 4.1 s) — ▲ plus lente, ▼ plus rapide. C’est la seule chose que BuildSmith affiche de lui-même, et elle se désactive dans les paramètres.

Comparable signifie le même type de génération (Générer ou Régénérer), la même configuration, la même plateforme et la même branche Git. S’il n’existe pas encore de telle génération, seule la durée est affichée.

L’en-tête

Le haut de la fenêtre résume la génération affichée :

À l’écranSignification
✓ 1 min 48 s  ▲ 4.1 s vs précédenteLe résultat (réussie ou en échec), la durée totale et un badge avec l’écart par rapport à la génération comparable précédente ; son info-bulle indique la durée de cette génération et sa date.
14 projets · 9 générés · 5 à jour · 1 en échecCombien de projets ont participé, combien ont réellement été générés, combien ont été ignorés car à jour, et combien ont échoué.
chemin critique 1 min 31 s · Debug · Any CPU · mainLa longueur du chemin critique, puis la configuration, la plateforme et la branche Git de la génération.
Le sélecteur de générationN’importe quelle génération enregistrée de la solution : la chronologie bascule dessus.
🏷 ⏻ ⚙🏷 étiquette la génération affichée, ⏻ active ou désactive l’enregistrement, ⚙ ouvre les paramètres.

Les barres

À l’écranSignification
Barre bleueUn projet qui a été généré, une ligne par projet dans l’ordre de démarrage : la barre commence là où le projet a réellement commencé après le début de la génération et dure aussi longtemps que lui. Les barres qui se chevauchent ont tourné en parallèle : vous voyez à quel point la génération était réellement parallèle.
Contour orangeLe chemin critique : la chaîne de projets, chacun attendant le précédent, qui a fixé la durée totale. Accélérer l’un d’eux accélère la génération ; les autres projets tournaient en parallèle.
Trait hachuréÀ jour : ignoré, rien n’y a changé.
Barre rougeLa génération du projet a échoué.
▲ 2.4 sÀ côté de chaque barre : sa durée et, s’il est notable, l’écart avec le même projet dans la génération comparable précédente.

Survolez une barre pour les détails : la durée du projet, de quand à quand après le début de la génération, l’écart avec la génération précédente, et s’il était sur le chemin critique.

La fenêtre peut rester ouverte pendant que vous travaillez : elle passe d’elle-même à chaque nouvelle génération. Les onglets Chronologie, Comparaison et Historique sont en haut.

Jamais à jour

Certains projets sont générés à chaque génération, même quand rien n’y a changé. À chaque fois, cela coûte quelques secondes, et personne ne le remarque. BuildSmith, si : au-dessus de la chronologie d’une génération incrémentielle, un bandeau indique combien il y a de tels projets et ce qu’ils coûtent par génération. Il se déplie en liste des projets ; leurs lignes sur la chronologie portent la marque ⟳.

Un bandeau au-dessus de la chronologie : 3 projets ne sont jamais à jour, 6.4 s par génération ; la liste des projets et les causes habituelles

La règle : un projet est signalé lorsqu’il a été généré lors de chacune des 3 à 5 dernières générations incrémentielles de la même configuration et de la même branche, alors que plus de la moitié de la solution était à jour. Les régénérations ne comptent pas — là, tout est généré exprès.

Les causes habituelles :

Corriger cela fait gagner ce temps à chaque génération. Le bandeau se désactive dans les paramètres : Signaler les projets jamais à jour.

Historique

L’onglet Historique liste les générations enregistrées de la solution, des plus récentes aux plus anciennes, regroupées par jour. Chaque ligne affiche l’heure, le type de génération, la configuration et la branche, son étiquette, et une barre proportionnelle à la durée — une génération lente saute aux yeux.

L’onglet Historique : une zone de recherche, des plages de dates, des générations cochées, des étiquettes, des barres proportionnelles à la durée et le menu contextuel

Trouver une génération

Tapez dans la zone de recherche — chaque mot doit se trouver dans l’étiquette, la branche, la configuration ou le type de génération. Restreignez par date avec Aujourd'hui, Hier et aujourd'hui, 7 jours ou Tout, ou choisissez des dates dans le calendrier (Dates…). Étiquetées seulement ne garde que les générations que vous avez étiquetées.

Ouvrir, étiqueter, conserver, supprimer

Cliquez sur une génération (ou appuyez sur Enter) pour l’ouvrir dans la chronologie. Le clic droit propose Ouvrir dans la chronologie, Étiqueter…, Conserver (ne jamais supprimer) et Supprimer. La touche Delete supprime la génération, avec Annuler pendant quelques secondes. Le menu ⋯ supprime les générations antérieures à une date, efface l’historique de cette solution ou de toutes les solutions.

Cochez des générations pour les comparer ou en supprimer plusieurs à la fois. Cocher les étiquetées coche chaque génération affichée qui a une étiquette — le moyen le plus rapide de comparer « avant » et « après ».

Combien de temps les générations sont conservées

Les générations sont conservées uniquement sur cet ordinateur, dans %LocalAppData%\BuildSmith, un historique par solution — pendant 1 jour, 3 jours, 1 semaine (par défaut), 2 semaines ou 1 mois. Les générations plus anciennes sont supprimées à l’ouverture de la solution ou à la fin d’une génération. Les générations étiquetées et conservées restent, quel que soit leur âge.

Étiquettes

🏷 dans l’en-tête (ou Étiqueter… dans le menu de l’historique) donne à une génération un court texte et une couleur : l’une des cinq, ou la vôtre grâce à un petit sélecteur avec une palette et les couleurs récentes. Les étiquettes récentes sont proposées à nouveau en un clic, si bien qu’une série de générations peut partager la même étiquette.

Une génération étiquetée n’est jamais supprimée pour cause d’ancienneté (sauf si vous désactivez Conserver les générations étiquetées). Conserver (ne jamais supprimer) épingle une génération sans étiquette.

Enregistrement

⏻ dans l’en-tête choisit si les générations sont enregistrées :

ChoixCe qui se passe
Enregistrer les générationsPar défaut : chaque génération est chronométrée et conservée dans l’historique.
Pas pour cette solutionCette solution n’est plus enregistrée ; les autres le sont toujours. Les paramètres listent ces solutions, avec Enregistrer à nouveau.
Désactivé partoutBuildSmith dort dans toutes les solutions.

Endormi, BuildSmith ne fait vraiment rien : il ne s’abonne pas aux événements de génération, n’écrit rien dans la barre d’état ni sur le disque. L’historique est conservé, et la fenêtre propose Enregistrer à nouveau les générations.

Comparer des générations

L’onglet Comparaison place des générations côte à côte : le correctif a-t-il aidé, quel projet a ralenti après la mise à jour, comment la durée de génération a évolué sur la semaine.

L’onglet Comparaison : les pastilles des générations, la tendance des durées et un tableau des projets par génération avec écarts colorés, mini-graphiques et chemin critique

Choisir les générations

Cochez de 2 à 10 générations dans Historique et appuyez sur ⇄ Comparer N. Sans coche, l’onglet Comparaison oppose la génération affichée à la génération comparable précédente. Les générations apparaissent en pastilles en haut ; ✕ en retire une de la comparaison.

La tendance et le tableau

Un petit graphique montre la durée totale de chaque génération. En dessous, un tableau projets × générations : chaque cellule est colorée selon l’écart avec la première génération — plus chaud, c’est plus lent, vert, plus rapide — avec un mini-graphique, l’écart, et ● là où le projet était sur le chemin critique. Les projets sans écart notable sont repliés dans … N de plus sans écart notable.

Seulement les projets qui vous intéressent

Projets : … filtre le tableau : Tous les projets (N), Nettement modifiés (N), Sur le chemin critique (N) ou Seulement ceux cochés, avec une zone de recherche. Le filtre est mémorisé par solution, et la tendance additionne alors la durée des projets filtrés — la tendance de vos projets, pas de toute la solution.

Un projet à travers les générations

Cliquez sur un projet pour voir ses barres dans chaque génération comparée ; une barre entourée signifie qu’il était sur le chemin critique de cette génération. ‹ Tous les projets revient en arrière.

Copier en Markdown

⧉ Copier place le tableau tel que vous le voyez — les mêmes générations, le même filtre — dans le Presse-papiers sous forme de tableau Markdown, prêt pour une pull request ou une discussion. Dans la vue d’un seul projet, c’est ce projet qui est copié.

Paramètres

Outils › Options › SmithWorks › BuildSmith (ou ⚙ dans la fenêtre Chronologie de génération). Chaque option a une courte description de ce qu’elle fait.

OptionPar défaut
Enregistrer les générationsactivé
Non enregistrées pour :Aucune solution n'est désactivée.
Conserver les générations :1 semaine
Conserver les générations étiquetéesactivé
Temps dans la barre d'étatactivé
Signaler les projets jamais à jouractivé
Demander une note sur le Marketplaceactivé

Effacer tout l'historique (N solutions, taille)… supprime les générations enregistrées de toutes les solutions et demande s’il faut garder celles étiquetées et conservées. En bas : Rétablir les valeurs par défaut, Documentation, Évaluer sur le Marketplace et Envoyer des commentaires.

Les paramètres et l’historique sont stockés dans %LocalAppData%\BuildSmith.

La page d’options de BuildSmith
La page d’options.

FAQ

BuildSmith envoie-t-il des données ?

Non. Les durées sont tirées des événements de génération de Visual Studio et conservées sur votre ordinateur, dans %LocalAppData%\BuildSmith. Aucune requête réseau, aucune télémétrie.

Pourquoi n’y a-t-il pas d’écart à côté de la durée ?

Il n’y a pas encore de génération comparable : même type (Générer ou Régénérer), même configuration, même plateforme et même branche. Générez une fois de plus, et l’écart apparaît.

Qu’est-ce que le chemin critique, exactement ?

La chaîne de projets que la génération a dû attendre : chacun n’a démarré qu’après la fin du précédent. Sa longueur est la durée minimale possible de la génération avec ces projets, quel que soit votre nombre de cœurs. Accélérer un projet hors du chemin critique ne raccourcit pas la génération.

La fenêtre reste vide après une génération.

Vérifiez que l’enregistrement est activé (⏻ dans la fenêtre, Enregistrer les générations dans les paramètres) et que cette solution ne figure pas dans la liste Non enregistrées pour. Les générations lancées hors de Visual Studio (dotnet build en ligne de commande) ne sont pas enregistrées.

BuildSmith ralentit-il la génération ?

Non. Il écoute le début et la fin de chaque projet, que Visual Studio signale de toute façon, et écrit un petit fichier après la génération. Il ne modifie ni la génération ni sa journalisation.

Quelle place l’historique prend-il sur le disque ?

Très peu : une génération, c’est une courte liste de projets avec leurs durées. Les paramètres affichent la taille à côté de Effacer tout l'historique, et les anciennes générations disparaissent d’elles-mêmes après la période choisie.

Où signaler un problème ou proposer une fonctionnalité ?

Ouvrez un ticket dans le dépôt Feedback sur GitHub — il y a des formulaires pour les bogues et les idées (modifiez les noms confidentiels). Vous pouvez aussi utiliser l’onglet Q&A sur le Marketplace.

Historique des versions

1.0.0