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

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 durée dans la barre d’état après chaque génération, avec l’écart par rapport à la génération comparable précédente :
⏱ 1 min 48 s (▲ 4.1 s). - La fenêtre Chronologie de génération : une barre par projet dans l’ordre de démarrage, le chemin critique entouré, les projets à jour hachurés, ceux en échec en rouge, et l’écart avec la génération précédente à côté de chaque barre.
- Jamais à jour : les projets générés à chaque génération incrémentielle alors que la majeure partie de la solution était à jour — et ce qu’ils coûtent à chaque fois.
- Historique de toutes les générations de la solution, conservé une semaine par défaut : recherche, plages de dates, calendrier, et des barres qui montrent d’un coup d’œil quelle génération a été lente.
- Étiquettes — « avant le correctif », « nouveau SDK » — dans l’une des cinq couleurs ou la vôtre ; une génération étiquetée ou conservée n’est jamais supprimée pour cause d’ancienneté.
- Comparaison de 2 à 10 générations : la tendance des durées totales et un tableau projets × générations avec écarts colorés, mini-graphiques et chemin critique — copié en Markdown pour une pull request.
- Désactiver sans désinstaller : pour une solution ou partout ; l’historique est conservé.
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 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’écran | Signification |
|---|---|
| ✓ 1 min 48 s ▲ 4.1 s vs précédente | Le 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 échec | Combien 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 · main | La longueur du chemin critique, puis la configuration, la plateforme et la branche Git de la génération. |
| Le sélecteur de génération | N’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’écran | Signification |
|---|---|
| Barre bleue | Un 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 orange | Le 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 rouge | La 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 ⟳.

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 :
- un fichier avec Copier dans le répertoire de sortie : Toujours copier — Copier si plus récent suffit ;
- une étape pré-build ou post-build qui modifie un fichier dont le projet dépend ;
- du code généré à chaque génération, même quand sa source n’a pas changé.
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.

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 :
| Choix | Ce qui se passe |
|---|---|
| Enregistrer les générations | Par défaut : chaque génération est chronométrée et conservée dans l’historique. |
| Pas pour cette solution | Cette solution n’est plus enregistrée ; les autres le sont toujours. Les paramètres listent ces solutions, avec Enregistrer à nouveau. |
| Désactivé partout | BuildSmith 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.

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.
| Option | Par défaut |
|---|---|
| Enregistrer les générations | activé |
| Non enregistrées pour : | Aucune solution n'est désactivée. |
| Conserver les générations : | 1 semaine |
| Conserver les générations étiquetées | activé |
| Temps dans la barre d'état | activé |
| Signaler les projets jamais à jour | activé |
| Demander une note sur le Marketplace | activé |
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.

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
- Première version : la durée de génération et son écart dans la barre d’état, la fenêtre Chronologie de génération avec le chemin critique, les projets jamais à jour, l’historique avec recherche, dates et étiquettes, la comparaison de jusqu’à 10 générations avec copie en Markdown, l’enregistrement activable par solution, la barre d’outils SmithWorks, une demande de note unique.