Articles avec le tag « .NET »
69 articles portant le tag « .NET », du plus récent au plus ancien.
-
Proxy d'entreprise et applications Windows — démêler la résolution de proxy dans WinINET, WinHTTP et .NET
Le navigateur passe, mais seule l'application métier ne franchit pas le proxy d'entreprise. La cause est souvent un décalage entre les réglages que lisent Wi...
-
Bonnes pratiques de multithreading en pratique — édition .NET : ce qu'il faut décider avant d'ajouter des threads
Un ensemble de bonnes pratiques de conception pour .NET/C# afin d'éviter que « démarrer un thread » ne fasse planter ou geler l'application de temps en temps...
-
Utiliser WMI/CIM depuis C# et PowerShell — Guide pratique pour la récupération d'informations matérielles, la surveillance des processus et l'interrogation à distance
La récupération du numéro de série d'un PC, la surveillance de l'espace disque libre et la détection du démarrage de processus reposent classiquement sur WMI...
-
Les profondeurs de l'E/S Windows (partie 5) — Structure interne de NTFS : comprendre le système de fichiers à travers la MFT
Cinquième volet d'une série qui explique la structure interne de NTFS à l'aide de schémas. Nous y présentons la MFT et les enregistrements de fichiers, les f...
-
Les profondeurs de l'E/S Windows (partie 4) — Le gestionnaire de cache : quand votre WriteFile atteint-il vraiment le disque ?
Quatrième partie d'une série qui explique en images le gestionnaire de cache de Windows. Cet article détaille le cache implémenté comme un mappage de fichier...
-
Les profondeurs de l'E/S Windows (partie 3) — Les ports d'achèvement d'E/S (IOCP) et le pool de threads .NET : le sous-sol d'async/await
Troisième volet d'une série qui explique en schémas le port d'achèvement d'E/S (IOCP). Nous y détaillons la conception qui unifie la file d'achèvement et le ...
-
Jusqu'à quand peut-on utiliser MSMQ ? — La décision de migration d'une file d'attente héritée « qui n'est même pas dépréciée »
MSMQ ne figure sur aucune liste officielle de dépréciation, mais System.Messaging n'existe que dans .NET Framework, ce qui bloque la migration vers .NET. Cet...
-
Les profondeurs de l'E/S Windows (partie 2) — E/S synchrones et asynchrones : ce que signifie vraiment OVERLAPPED
Deuxième volet d'une série qui explique en schémas l'E/S synchrone et l'E/S asynchrone (E/S overlapped) de Windows. Nous y détaillons le sens de FILE_FLAG_OV...
-
Les profondeurs de l'E/S Windows (partie 1) — Chaque lecture et écriture devient un IRP : la vue d'ensemble du système d'E/S
Premier volet d'une série qui explique le système d'E/S de Windows en partant de la base. Nous cartographions l'espace de noms de l'Object Manager, les trois...
-
Appeler COM et .NET depuis PowerShell en pratique — élargir d'un coup la portée de vos scripts
Un guide pratique qui explique comment appeler des classes .NET depuis PowerShell, l'intégration de C# et de l'API Win32 via Add-Type, la manipulation COM, l...
-
La conception des codes dans les systèmes métier — Comment définir les codes produit et client, et la clé de contrôle
Un guide pratique pour définir le système de codes des systèmes métier — codes produit, codes client, etc. Il couvre le tableau de décision entre codes signi...
-
Compatibilité descendante des interfaces DLL et COM — Tableau de décision : quels changements cassent les appelants
Quels changements apportés à une DLL ou à un composant COM cassent réellement leurs appelants ? Nous détaillons les trois niveaux de compatibilité — binaire,...
-
Versionner le schéma de base de données d'une application métier — pratiques de migration pour éviter que « chaque client ait une base différente »
Guide pratique pour versionner le schéma de base de données d'applications métier dont les bases sont dispersées chez chaque client. Implémentation C# de PRA...
-
CI/CD pratique pour les applications WinForms / WPF — Automatiser du build à la signature et à la distribution avec GitHub Actions
Guide pratique pour mettre en place le CI/CD des applications WinForms / WPF avec GitHub Actions. Couvre un YAML minimal de build+tests sur windows-latest, l...
-
Modifier en toute sécurité une application métier legacy sans tests — Tests de caractérisation et refactorisation en pratique
Pour modifier en toute sécurité une application métier sans tests, cet article explique, avec des exemples en C#, la procédure du test de caractérisation (mé...
-
Quand votre application Windows maison est signalée comme un virus — gérer les faux positifs de Microsoft Defender et composer avec l'impact sur les performances
Nous détaillons la marche à suivre officielle lorsque Microsoft Defender signale à tort une application Windows développée en interne comme malveillante : le...
-
Veille, mise en veille prolongée, Modern Standby et applications longue durée — concevoir pour éviter « ça s'était arrêté pendant la nuit »
Pourquoi une application Windows censée tourner en continu se retrouve « arrêtée quand on la consulte le matin » : différences entre la veille S3 classique, ...
-
Les applications métier fonctionnent-elles sous Windows on Arm ? — La réalité de l'émulation x64 (Prism) et des DLL/COM natifs
Une réponse, destinée aux développeurs et aux services informatiques, à la question « notre application métier fonctionnera-t-elle sous Windows on Arm ? ». C...
-
MAX_PATH et les pièges des chemins et noms de fichiers Windows — la limite de 260 caractères, les noms réservés, les points de fin et la casse
Un tour d'horizon des limites de chemins et de noms de fichiers à l'origine du classique bug « fichier introuvable ». Cet article couvre le détail de MAX_PAT...
-
Les pièges des lecteurs réseau et des chemins UNC — Travailler avec un serveur de fichiers (dossier partagé) depuis une application métier
Cet article recense les problèmes classiques rencontrés lorsqu'une application métier écrit dans un dossier partagé ou le surveille : pourquoi une lettre de ...
-
Icônes de la zone de notification et notifications toast dans les applications Windows — les pièges de NotifyIcon et comment choisir la bonne AppNotification
Un guide pratique pour maintenir une application Windows métier résidente dans la zone de notification (system tray) et avertir l'utilisateur par des notific...
-
Jusqu'à quand les applications VB6 continueront-elles de fonctionner ? — état du support du runtime et démarche concrète vers une migration .NET
Jusqu'à quand les applications VB6 continueront-elles de fonctionner ? Cet article clarifie l'asymétrie entre la politique de support du runtime VB6 (toujour...
-
Ère japonaise, jours fériés et dates de clôture dans les applications métier — conception résiliente aux changements d'ère, JapaneseCalendar et calcul des jours ouvrés en pratique
Afficher « Reiwa 8 » sur un bordereau, calculer des jours ouvrés en excluant les jours fériés, régler un paiement à la fin du mois suivant une clôture le 20 ...
-
Internationalisation des applications WinForms/WPF : resx, assemblies satellites et changement de culture en pratique
Un guide pratique pour internationaliser une application de bureau Windows : la différence entre CurrentCulture et CurrentUICulture, le fonctionnement des re...
-
Le CSV n'est pas « juste du texte » ── La pratique du CSV dans les applications métier C# (encodage des caractères, compatibilité Excel, protection contre l'injection)
Ce guide fait le point, du point de vue de la pratique, sur les incidents classiques des entrées/sorties CSV dans les applications métier - analyse maison vi...
-
N'enfermez pas HttpClient dans un using — la communication HTTP en C# pour applications métier (modèles de création, délais d'expiration, tentatives)
Instancier HttpClient à chaque appel avec using épuise les sockets, et le rendre static l'empêche de suivre les changements de DNS — cet article détaille ces...
-
Identifier précisément les lenteurs avec PerfView et dotnet-trace — Introduction pratique à l'analyse des performances .NET
Lorsqu'une application métier est « lente », « sature le processeur » ou « se fige parfois », quel outil utiliser et que faut-il observer ? Cet article expli...
-
Introduction au journal des événements Windows et à ETW — placer les journaux de votre application métier sur les mécanismes standard de l'OS
Votre application métier Windows repose-t-elle seulement sur les journaux de fichiers ? Le journal des événements et ETW sont visibles à une autre couche : c...
-
Au-delà de appsettings.json — guide pratique de la gestion de configuration dans les applications métier Windows (environnements, secrets et emplacements d'écriture)
Guide pratique de la configuration des applications métier Windows : superposition de appsettings.json, choix entre IConfiguration et IOptions/IOptionsSnapsh...
-
Impression et sortie PDF dans les applications métier Windows — choisir entre System.Drawing.Printing, WPF et bibliothèques de rapports
Organise l'impression WinForms avec PrintDocument, l'impression WPF FlowDocument/FixedDocument et les options de sortie PDF dans une table de décision par be...
-
Comprendre vraiment le modèle OSI — disséquer une requête HTTP en ses sept couches
Comprendre le modèle OSI par l'expérience concrète plutôt que par cœur. Nous assemblons et disséquons en C# la trame Ethernet transportant une unique requête...
-
Comment comprendre l'isolation des sessions Windows — Session 0, RDP et exécution simultanée de plusieurs utilisateurs
Cet article démêle le concept de « session » Windows, un sujet qui déroute régulièrement les développeurs d'applications Windows. Il explique pourquoi l'isol...
-
Lire un dump de plantage avec WinDbg + SOS — Guide pratique d'analyse après la collecte
Explique comment lire concrètement un dump de plantage Windows collecté, à l'aide de WinDbg et de l'extension SOS. Couvre la configuration du chemin des symb...
-
Empêcher les lancements multiples d'une application Windows — Mutex nommé et activation de la fenêtre existante lors d'un second lancement
Cet article détaille comment implémenter la prévention des lancements multiples d'une application Windows métier à l'aide d'un Mutex nommé. Il explique le pi...
-
Appeler les API Win32 en toute sécurité depuis C# — Guide pratique de P/Invoke (DllImport / LibraryImport / CsWin32)
Un tour d'horizon pratique des points essentiels pour appeler des API Win32 depuis C# via P/Invoke : différences entre DllImport et LibraryImport, génération...
-
Intégrer l'authentification Entra ID dans une application WinForms/WPF — Architecture pratique avec MSAL.NET et le broker WAM
Guide pratique pour intégrer l'authentification Entra ID (ex Azure AD) dans une application de bureau WinForms/WPF : la logique du client public, où en est l...
-
Date, heure et fuseaux horaires dans les applications métier — des pièges de DateTime au principe de stockage en UTC et à la conception des tests
Un déplacement de serveur fait dériver les horaires de neuf heures : cet article remonte à la source des incidents de date/heure, la propriété Kind de DateTi...
-
Tests UI automatisés pour applications de bureau Windows — le fonctionnement de UI Automation et la construction de tests robustes avec FlaUI
Un guide pratique des tests UI automatisés pour applications WinForms/WPF, en partant du fonctionnement de Windows UI Automation (l'arborescence, AutomationI...
-
Le support du haut DPI dans WPF — pourquoi l'affichage reste flou et baveux malgré une application « censée résister au DPI », et comment y remédier
WPF met en page en DIP (1/96 de pouce) et est System DPI Aware dès le départ, mais déplacer une fenêtre vers un moniteur au DPI différent fait baver tout l'é...
-
Le problème d'EXCEL.EXE qui reste actif lors de la manipulation d'Excel en C# — schémas de libération des références COM et décision de remplacement
Analyse du problème du processus EXCEL.EXE qui reste actif après une automatisation COM d'Excel depuis C#, à partir du comptage de références COM et du mécan...
-
La prise en charge du haut DPI dans WinForms — pourquoi l'interface devient floue ou se casse sur les moniteurs 4K, et solutions concrètes
Cet article explique pourquoi les applications WinForms deviennent floues ou voient leur mise en page se casser sur les moniteurs 4K, à partir de la virtuali...
-
Comment choisir la communication inter-processus sous Windows ── Tableau de décision : tubes nommés / TCP / gRPC / mémoire partagée / COM
Comment choisir le moyen de faire communiquer des applications Windows entre elles ? Cet article organise les tubes nommés, le TCP local, gRPC, la mémoire pa...
-
Utiliser SQLite en C# dans une application métier — mode WAL, contrôle d'accès exclusif, prévention de la corruption, et quand choisir EF Core
Un tour d'horizon pratique de l'intégration de SQLite dans une application métier avec Microsoft.Data.Sqlite : le mode WAL, SQLITE_BUSY et la consolidation d...
-
Comment créer et exploiter un service Windows ── du choix entre Planificateur de tâches et service à la transformation d'un BackgroundService en service Windows
Faut-il transformer un traitement résident en service Windows, ou le Planificateur de tâches suffit-il ? Ce guide organise, du point de vue pratique, le trav...
-
WebView2 est-il le bon successeur du mode IE ? — La contrainte ActiveX et une conception de migration réaliste
Un tour d'horizon de l'architecture de base de WebView2, des stratégies de distribution Evergreen et Fixed Version, du piège du dossier de données utilisateu...
-
Comment choisir où une application Windows stocke ses données locales — tableau de décision pour SQLite / JSON / Registre / Access
Où et sous quelle forme une application de bureau Windows doit-elle stocker ses données ? Cet article organise le choix entre AppData et ProgramData, ainsi q...
-
Qu'est-ce qu'un PDB (Program Database) ? — Comprendre les informations de débogage, les symboles et Source Link
Qu'est-ce qu'un PDB (Program Database) ? Nous expliquons de façon pratique ce qu'il contient et ne contient pas, ainsi que ses liens avec Debug / Release, le...
-
Qu'est-ce que Roslyn ? Lire, corriger et générer du code C# du point de vue du compilateur
Présentation de Roslyn (.NET Compiler Platform) : Syntax Tree, SemanticModel, Workspace, Analyzer, Source Generator, ainsi que les cas d'usage concrets et le...
-
Externalisation et développement sur mesure d'une application Windows : ce qu'il faut clarifier avant de se lancer
Avant de confier l'externalisation ou le développement sur mesure d'une application Windows, voici les points à clarifier : révision d'un logiciel existant, ...
-
Utiliser les types de données algébriques en .NET Framework / .NET — concevoir les états et les résultats avec les types
Comment utiliser les types de données algébriques — notamment les types somme et les unions discriminées — en .NET Framework et en .NET, et les bénéfices qu'...
-
Bien gérer les jetons d'emprunt d'identité Windows — emprunt des privilèges par thread et retour sécurisé au contexte d'origine
Un guide pratique des jetons d'emprunt d'identité sous Windows : jetons d'accès, jetons principaux, jetons de thread, niveaux d'emprunt d'identité, RevertToS...
-
Le malentendu selon lequel TCP renvoie les données dans les mêmes unités que Send — concevoir la réception comme un flux d'octets
Supposer que TCP restitue les données dans les mêmes unités que Send ou Write mène à des fragmentations, des fusions, des données corrompues et des protocole...
-
Distinguer l'attente du GC d'une fuite mémoire en .NET — Procédure pratique pour observer, comparer et prouver la croissance mémoire
Procédure pour déterminer si la croissance de la mémoire d'une application .NET est une simple attente du ramasse-miettes ou une véritable fuite mémoire, à l...
-
Comment exécuter PowerShell depuis C# (CSharp) et récupérer le résultat sous forme d'objets
Comment lancer PowerShell depuis C# et récupérer le résultat sous forme de PSObject plutôt que de chaînes de caractères : un tour d'horizon pratique du Power...
-
Pourquoi Windows est devenu ce qu'il est aujourd'hui : l'évolution de Windows vue par un développeur
Un panorama des évolutions de Windows 95 à Windows 11, non pas comme une simple frise visuelle, mais du point de vue d'un développeur d'applications Windows ...
-
Qu'est-ce que ClickOnce ? - Fonctionnement, mises à jour, et les cas où c'est adapté ou non, du point de vue de la pratique
Présentation de ClickOnce, la technologie de déploiement utilisée pour les applications de bureau .NET sous Windows - manifestes, mises à jour, cache, signat...
-
Checklist pour gérer les processus enfants en toute sécurité dans une application Windows
Pour gérer en toute sécurité les processus enfants dans une application Windows, l'important n'est pas l'API de lancement mais la conception de la propriété ...
-
Distribution en un seul fichier des applications Windows - Binaire unique et limites des dépendances au système
Quand on veut regrouper une application Windows en un seul EXE, il faut distinguer le fait de réduire la distribution à un seul artefact et celui de supprime...
-
Pièges des applications de communication série — de la reconnexion à la conception des journaux
Un tour d'horizon pratique des pièges à éviter dans les applications de communication série pour l'intégration d'équipements et le contrôle d'instruments : t...
-
Liste de vérification avant de migrer de .NET Framework vers .NET
Liste de vérification pratique à passer en revue avant de migrer de .NET Framework vers .NET : type de projet, technologies non prises en charge, dépendances...
-
Qu'est-ce que le .NET Generic Host ? - Le socle de la DI, de la configuration et des logs
Cet article clarifie le rôle du Generic Host à travers ses liens avec la DI, la configuration, les logs, IHostedService et BackgroundService, et résume, d'un...
-
Qu'est-ce que .NET Native AOT ? - Les différences avec JIT et le trimming
Ce qu'est Native AOT en .NET, expliqué à travers ses différences avec JIT, ReadyToRun, self-contained, single-file, trimming et les source generators, avec l...
-
Bien choisir entre les 3 minuteurs .NET - PeriodicTimer/Timer/DispatcherTimer
Cet article explique les différences entre PeriodicTimer, System.Threading.Timer et DispatcherTimer, et comment bien les choisir selon qu'il s'agit de traite...
-
Appeler une DLL C# Native AOT depuis C/C++
Nous faisons le point sur la publication d'une bibliothèque de classes C# en DLL native avec Native AOT, et sur l'appel depuis C/C++ des points d'entrée marq...
-
Pourquoi utiliser le Generic Host .NET et BackgroundService dans une application de bureau
Comment utiliser le Generic Host et BackgroundService pour organiser le démarrage, le traitement périodique, l'arrêt, la journalisation, la configuration et ...
-
Comment traiter ActiveX / OCX aujourd'hui - Tableau de décision conserver / envelopper / remplacer
Lorsque vous rencontrez ActiveX / OCX, comment choisir entre conserver, envelopper et remplacer, en couvrant le 32 bits / 64 bits, l'enregistrement, les dépe...
-
WPF/WinForms : async et le thread UI récapitulés en une fiche
Après un await dans WPF ou WinForms, sur quel thread votre code reprend-il ? Nous couvrons Dispatcher / Invoke, ConfigureAwait(false), et pourquoi .Result et...
-
Guide pratique de FileSystemWatcher - Gérer les événements manqués et les doublons
Nous faisons le point sur l'utilisation de FileSystemWatcher et ses pièges : événements manqués, notifications en double, pièges de la détection d'achèvement...
-
Tableau de décision pratique pour C# async/await - Task.Run et ConfigureAwait
Nous organisons les bonnes pratiques de C# async/await - attentes d'E/S, calcul CPU, Task.Run, ConfigureAwait(false) et fire-and-forget - avec un tableau de ...