Trois destinations possibles, à ne pas confondre
« Migrer » recouvre trois projets très différents, et le budget dépend d'abord de celui que vous visez.
| Destination | Ce que cela change | Ce que cela ne change pas |
|---|---|---|
| De .NET Framework vers .NET récent | Le format de projet, certaines API, les dépendances NuGet | L'application reste un programme Windows à installer |
| D'une version de .NET à la suivante (par exemple 9 vers 10) | La cible du projet, les changements cassants à examiner, les dépendances | Tout le reste |
| Vers une application web | L'interface, l'architecture, le déploiement : tout est réécrit | Les règles métier, qu'il faut retrouver à l'identique |
La documentation de Microsoft sur la migration le dit sans ambiguïté : Windows Forms est prise en charge sur .NET et reçoit un investissement actif, mais les applications de bureau pour .NET restent réservées à Windows. Passer à .NET récent est donc une mise à niveau ; ce n'est pas un chemin vers le navigateur. Pour le web, il faut une nouvelle interface.
Pourquoi un chiffrage « au doigt mouillé » échoue
Compter les écrans d'une solution ne suffit pas. Deux fenêtres qui paraissent semblables peuvent différer de dix fois en travail : l'une affiche un formulaire de saisie, l'autre pilote un automate, dessine un graphique sur mesure et imprime un état imposé. Trois pièges reviennent.
- Les écrans morts. Une solution contient souvent des fenêtres que plus aucun chemin n'atteint. Elles ne doivent pas figurer dans le prix.
- Les écrans ouverts par configuration. À l'inverse, un écran créé par réflexion ou par un fichier de paramètres échappe à l'analyse automatique. Il faut le remettre dans le périmètre à la main.
- Les usages propres au poste Windows. Registre, ports série, appels P/Invoke, composants COM, impression, fichiers locaux, protocoles industriels : aucun ne fonctionne tel quel dans un navigateur. Chacun devient un chantier commun à traiter une fois pour toute l'application.
Mesurer avant de promettre
La méthode que Consigne publie repose sur un inventaire produit par l'outil libre winmig (licence MIT), qui lit le code source sans le compiler ni l'exécuter et sans ouvrir de connexion réseau. Un projet qui ne compile plus peut donc être analysé. L'inventaire donne, pour chaque écran, ses contrôles, ses gestionnaires d'événements, ses liaisons de données et ses lignes de logique, plus la liste des dépendances classées par famille.
Chaque écran reçoit ensuite un score, puis une classe et des unités d'écran.
| Classe | Score | Unités d'écran |
|---|---|---|
| S | moins de 30 | 0,5 |
| M | 30 à 79 | 1 |
| L | 80 à 179 | 2 |
| XL | 180 et plus | 3 |
Le score vaut : contrôles + 2 × gestionnaires d'événements + liaisons de données + lignes de logique ÷ 15 + 0,5 × branches + 4 × contrôles tiers. Chaque point lourd propre à l'écran (accès direct à une base, dessin personnalisé, animation) ajoute 0,5 unité. On y ajoute un socle de 4 unités (application, authentification, thème, temps réel, intégration continue) et les chantiers transverses, dont le coût croît avec le nombre de fichiers touchés.
Ce que l'outil ne voit pas, il faut le demander explicitement à celui qui chiffre : les écrans créés par réflexion ou par configuration, les contrôles créés à l'exécution, et la logique cachée dans la base de données (procédures stockées, déclencheurs).
Du nombre d'unités au prix
Chez Consigne, une unité d'écran vaut 2 500 € HT, soit 2,4 à 3,2 jours de travail. Le travail est découpé en lots.
- Le premier lot livre le socle web, les chantiers communs et la fenêtre principale, qui tourne dans un navigateur avec des données de test représentatives. Il compte en général 15 à 20 unités, soit 37 500 à 50 000 € HT et 9 à 13 semaines.
- Les lots suivants comptent environ 10 unités, soit environ 25 000 € HT et 5 à 7 semaines.
- Un lot se facture à ses unités réelles, avec un minimum de 5 unités.
Le rapport d'exemple publié sur l'application open source OPC UA Reference Client donne 19,5 unités pour son premier lot. À 2 500 € l'unité, cela fait 48 750 € HT, et entre 47 et 62 jours de travail avec les deux bornes de 2,4 et 3,2 jours (calcul fait ici à partir des chiffres publiés).
Choisir l'architecture cible
Le prix dépend de la cible. Les options sérieuses, telles que la méthode de Consigne les compare, sont les suivantes.
| Option | Atout | Limite |
|---|---|---|
| Transposition automatique par outil commercial | Rapide, le code C# reste | Licence d'exécution aux conditions de l'éditeur ; l'ergonomie reste celle d'un écran de bureau |
| Avalonia ou .NET récent en gardant le client lourd | Garde le client lourd, multiplateforme | Reste une application à installer |
| Blazor | Du C# jusque dans l'interface | Écosystème de composants plus petit ; même réécriture écran par écran |
| Réécriture Angular et ASP.NET Core | Vraie application web, prix ferme par lot | Demande une recette sérieuse, écran par écran |
Dans l'offre de Consigne, Angular est le choix par défaut pour des applications métier web durables, et si Blazor convient mieux à votre équipe, l'audit le recommande et revoit le chiffrage, calibré pour Angular.
Les états Crystal Reports, à part
Si votre application utilise Crystal Reports, mettez ces états à part dans le budget. Selon la méthode publiée, le moteur ne fonctionne ni sur .NET 5 et suivants, ni dans un navigateur. Chaque fichier .rpt est donc listé avec le code qui l'ouvre, puis chiffré séparément : 250 € HT pour un état simple, 550 € pour un état moyen, 1 100 € pour un état complexe, d'après des critères publics (sources, sous-rapports, formules, graphiques, tableaux croisés, codes-barres, imprimé imposé).
Questions à poser à celui qui vous chiffre
- Le périmètre est-il relu avec moi, écran mort par écran mort, ou compté mécaniquement ?
- Les chantiers communs (matériel, impression, registre) sont-ils chiffrés à part, avec leur règle de calcul ?
- Le prix est-il ferme par lot, et puis-je m'arrêter après n'importe lequel sans pénalité ?
- Quelle recette, quelle garantie, et que devient une évolution demandée en cours de route ?
- Mon code doit-il quitter mes machines pour obtenir le chiffrage ?
Dans la méthode de Consigne, la recette dure 10 jours ouvrés après chaque lot, avec 3 mois de garantie sur les anomalies du lot recetté, et le paiement se fait à 30 % à la commande, 40 % à mi-parcours et 30 % à la recette.
L'audit de migration de Consigne, en bref
L'audit de migration WinForms applique cette méthode, entièrement à distance, pour 4 900 € HT. Vous lancez winmig sur votre solution et vous envoyez l'inventaire, que vous pouvez relire avant l'envoi, avec un questionnaire de cadrage de 20 questions. Un développeur senior relit le périmètre, rédige l'avis et maquette deux écrans en HTML. Vous recevez, sous 10 jours ouvrés, un rapport PDF avec un plan de lots chiffré, ainsi qu'une proposition ferme pour le premier lot, valable 3 mois et déduite du prix de l'audit.
Les limites sont écrites sur la page de l'offre : une application par audit, jusqu'à 80 écrans dans le périmètre, WinForms et WPF en C# ou VB.NET, de .NET Framework à .NET 10. VB6 relève d'un diagnostic distinct, Delphi et C++/MFC ne sont pas couverts. La réalisation de la migration, la reprise des données et les licences de composants tiers ne sont pas dans l'audit. L'outil winmig reste utilisable seul, gratuitement, pour obtenir un premier inventaire.
Sources
- Migrer vers .NET, documentation Windows Forms, Microsoft Learn
- Politique de support de .NET et .NET Core, Microsoft
- README et méthode de l'outil libre winmig, Consigne
- Fiche de l'offre Audit de migration WinForms, Consigne
- Textes relus le 30 octobre 2026