Artikel mit dem Tag „.NET“
69 Artikel mit dem Tag „.NET“, vom neuesten zum ältesten.
-
Unternehmensproxy und Windows-Apps — Proxyauflösung in WinINET, WinHTTP und .NET sortieren
Der Browser kommt durch, nur die Geschäftsanwendung nicht durch den Unternehmensproxy. Die Ursache ist meist ein Missverhältnis darüber, welche Proxyeinstell...
-
Praktische Best Practices für Multithreading: .NET-Edition — Was Sie entscheiden sollten, bevor Sie weitere Threads hinzufügen
Eine praxisnahe Übersicht der Entwurfsregeln, die verhindern, dass Multithreading-Code in .NET/C# gelegentlich abstürzt oder hängen bleibt: auf Task statt au...
-
WMI/CIM aus C# und PowerShell verwenden — Praxisleitfaden für Hardwareinformationen, Prozessüberwachung und Remoteabfragen
WMI/CIM ist die Standardlösung, um die Seriennummer eines PCs auszulesen, freien Festplattenspeicher zu überwachen und den Start von Prozessen zu erkennen. D...
-
Die Tiefen von Windows I/O (Teil 5) — NTFS-Interna: Das Dateisystem anhand des MFT verstehen
Teil 5 einer Serie, die die NTFS-Interna anhand von Diagrammen erklärt. Behandelt werden der MFT und Dateidatensätze, mehrere Datenströme (Zone.Identifier), ...
-
Die Tiefen von Windows-I/O (Teil 4) — Cache-Manager: Wann erreicht Ihr WriteFile tatsächlich die Festplatte?
Teil 4 einer bebilderten Reihe über den Windows-Cache-Manager. Behandelt den als Dateizuordnung implementierten Cache, Read-Ahead und verzögertes Schreiben, ...
-
Die Tiefen von Windows-I/O (Teil 3) — I/O-Completion-Ports (IOCP) und der .NET-Thread-Pool: Der Keller unter async/await
Teil 3 einer Reihe, die I/O-Completion-Ports (IOCP) anhand von Diagrammen erklärt. Behandelt das Design, das Completion-Queue und Thread-Anzahl-Steuerung ver...
-
Wie lange lässt sich MSMQ noch nutzen? ── Die Migrationsentscheidung für eine Legacy-Queue, die nicht einmal „deprecated“ ist
MSMQ steht nicht auf Microsofts offiziellen Deprecated-Listen, doch System.Messaging existiert nur im .NET Framework und blockiert die Migration zu .NET. Die...
-
Die Tiefen von Windows I/O (Teil 2) — Synchrones und asynchrones I/O: Was OVERLAPPED wirklich bedeutet
Teil 2 einer Serie, die Windows' synchrones und asynchrones I/O (Overlapped I/O) anhand von Diagrammen erklärt. Wir stellen die Bedeutung von FILE_FLAG_OVERL...
-
Die Tiefen von Windows I/O (Teil 1) — Jedes Lesen und Schreiben wird zu einem IRP: Das Gesamtbild des I/O-Systems
Teil 1 einer Serie, die das Windows-I/O-System von Grund auf erklärt. Wir stellen den Namensraum des Object Managers, die drei Objektarten Treiber, Gerät und...
-
COM und .NET aus PowerShell aufrufen — Was Ihre Skripte erreichen können, erweitern
Ein praktischer Leitfaden zum Aufrufen von .NET-Klassen aus PowerShell, zum Einbetten von C#- und Win32-APIs mit Add-Type, zur Steuerung von COM, zum Bereini...
-
Code-Design für Geschäftssysteme — Produkt- und Kundencodes festlegen, und Prüfziffern
Ein praxisnaher Leitfaden zur Festlegung des Codesystems eines Geschäftssystems, einschließlich Produkt- und Kundencodes. Behandelt eine Entscheidungstabelle...
-
Abwärtskompatibilität von DLL- und COM-Schnittstellen — Eine Entscheidungstabelle dafür, welche Änderungen Aufrufer brechen
Welche Änderungen an einer DLL oder COM-Komponente brechen tatsächlich deren Aufrufer? Wir legen die drei Ebenen der Kompatibilität dar — binär, Quellcode un...
-
Das Datenbankschema Ihrer Business-Anwendung versionieren ── Migrationspraxis gegen „jeder Kunde hat eine andere Datenbank“
Ein praktischer Leitfaden zur Versionierung des Datenbankschemas einer Business-Anwendung, deren Datenbanken über zahlreiche Kundenstandorte verstreut sind. ...
-
CI/CD für WinForms-/WPF-Anwendungen in der Praxis ── Vom Build über die Signierung bis zur Distribution mit GitHub Actions automatisieren
Ein praktischer Leitfaden zur Einrichtung von CI/CD für WinForms-/WPF-Anwendungen mit GitHub Actions. Behandelt eine minimale YAML für Build+Test auf windows...
-
Eine Legacy-Business-Anwendung ohne Tests sicher verändern ── Charakterisierungstests und Refactoring in der Praxis
Um eine Business-Anwendung ohne Tests sicher zu verändern, erklärt dieser Artikel anhand von C#-Beispielen das Vorgehen bei einem Charakterisierungstest (der...
-
Wenn die eigene Windows-App als Virus gemeldet wird — Umgang mit Fehlalarmen von Microsoft Defender und den Auswirkungen auf die Leistung
Wir legen dar, wie richtig reagiert wird, wenn Microsoft Defender die eigene Windows-App als Malware meldet: wie moderne Antivirus-Erkennung tatsächlich funk...
-
Energiesparmodus, Ruhezustand, Modern Standby und lang laufende Anwendungen ── Design gegen „über Nacht stehengeblieben“
Warum eine lang laufende Windows-Anwendung morgens beim Nachsehen „stehengeblieben“ sein kann, aufgearbeitet anhand der Unterschiede zwischen S3-Energiesparm...
-
Laufen Business-Anwendungen unter Windows on Arm? ── Die Realität von x64-Emulation (Prism) und nativen DLLs/COM
Eine Antwort für Entwicklerinnen, Entwickler und IT-Verantwortliche auf die Frage „Läuft unsere Business-Anwendung unter Windows on Arm?“. Behandelt, wie die...
-
MAX_PATH und die Fallstricke von Windows-Pfaden und Dateinamen ── Das 260-Zeichen-Limit, reservierte Namen, abschließende Punkte und Groß-/Kleinschreibung
Ein Überblick über die Pfad- und Dateinamensbeschränkungen hinter dem klassischen Fehler „Datei nicht gefunden“. Behandelt werden die Zusammensetzung von MAX...
-
Die Fallstricke von Netzlaufwerken und UNC-Pfaden ── Fileserver (Freigabeordner) in Business-Anwendungen richtig einsetzen
Dieser Artikel ordnet die klassischen Probleme, die auftreten, wenn eine Business-Anwendung in einen Freigabeordner schreibt oder ihn überwacht: warum ein La...
-
Infobereich-Symbole und Toast-Benachrichtigungen in Windows-Apps — Fallstricke von NotifyIcon und die richtige AppNotification-Wahl
Ein praktischer Leitfaden dafür, eine geschäftliche Windows-Anwendung im Infobereich (System Tray) resident zu halten und den Benutzer über Toast-Benachricht...
-
Wie lange laufen VB6-Anwendungen noch? — Support-Status der Laufzeitumgebung und ein praxisnaher Weg zur .NET-Migration
Wie lange laufen VB6-Anwendungen noch? Dieser Artikel ordnet die Asymmetrie zwischen der Support-Richtlinie für die VB6-Laufzeitumgebung (auch unter Windows ...
-
Japanische Ära, Feiertage und Abrechnungsstichtage in Business-Apps — Übergangsresistentes Design, JapaneseCalendar und Werktagsberechnung in der Praxis
Auf einem Beleg muss „Reiwa 8“ stehen, die Werktagsberechnung muss Feiertage ausschließen, die Zahlung ist am letzten Werktag des Folgemonats nach Abrechnung...
-
Mehrsprachigkeit für WinForms/WPF-Anwendungen ── resx, Satelliten-Assemblies und Kulturumschaltung in der Praxis
Dieser Artikel behandelt die Mehrsprachigkeit von Windows-Desktopanwendungen aus Praxissicht: den Unterschied zwischen CurrentCulture und CurrentUICulture, d...
-
CSV ist nicht „nur Text“ ── CSV in der Praxis für C#-Business-Anwendungen (Zeichenkodierung, Excel-Kompatibilität, Schutz vor Injection)
Typische Fehlerquellen bei der CSV-Ein-/Ausgabe in Business-Anwendungen – selbstgebautes Parsen mit Split(','), Excel-Zeichensalat bei UTF-8 ohne BOM, verlor...
-
HttpClient nicht mit using umschließen ── HTTP-Kommunikation in C#-Geschäftsanwendungen (Erzeugungsmuster, Timeouts, Retries)
Wer HttpClient in C# bei jeder Anfrage neu mit using erzeugt, riskiert eine Socket-Erschöpfung; wer ihn einfach static macht, folgt DNS-Änderungen nicht mehr...
-
Mit PerfView und dotnet-trace die Ursache von „langsam“ finden — Praxis-Einstieg in die .NET-Performanceanalyse
Wenn eine Geschäftsanwendung langsam ist, die CPU auslastet oder gelegentlich einfriert: Welches Werkzeug zeigt was? Dieser Beitrag ordnet die Aufgaben von P...
-
Einführung in Windows-Ereignisprotokoll und ETW ── Protokolle von Geschäftsanwendungen in die Standardmechanismen des Betriebssystems einordnen
Verlassen Sie sich bei den Protokollen einer Windows-Geschäftsanwendung nur auf Dateien? Ereignisprotokoll und ETW bilden eine eigene Ebene, die Betriebsteam...
-
Nicht nur appsettings.json ── Praxisleitfaden für die Konfigurationsverwaltung in Windows-Geschäftsanwendungen (Umgebungen, Geheimnisse und Speicherorte)
Ein praxisnaher Leitfaden zur Konfigurationsverwaltung in Windows-Geschäftsanwendungen: Schichtung von appsettings.json, Einsatz von IConfiguration sowie IOp...
-
Drucken und PDF-Ausgabe in Windows-Geschäftsanwendungen — System.Drawing.Printing, WPF und Berichtsbibliotheken richtig einsetzen
Dieser Beitrag ordnet WinForms-Druck mit PrintDocument, WPF-Druck mit FlowDocument und FixedDocument sowie Möglichkeiten zur PDF-Ausgabe in einer Entscheidun...
-
Das OSI-Modell wirklich verstehen — eine einzelne HTTP-Anfrage in ihre sieben Schichten zerlegen
Wir verstehen das OSI-Modell anhand der Praxis statt durch Auswendiglernen. In C# bauen wir den Ethernet-Frame, der eine einzelne HTTP-GET-Anfrage trägt, zus...
-
Wie man die Windows-Sitzungsisolierung versteht — Session 0, RDP und die gleichzeitige Nutzung durch mehrere Benutzer
Dieser Artikel erklärt das Konzept der Windows-„Sitzung“ (Session), das Windows-App-Entwickler immer wieder verwirrt. Er behandelt, warum die Session-0-Isoli...
-
Absturz-Dumps mit WinDbg + SOS lesen — Ein praxistauglicher Leitfaden zur Analyse nach der Sammlung
Erklärt, wie man einen gesammelten Windows-Absturz-Dump tatsächlich mit WinDbg und der SOS-Erweiterung liest. Behandelt die Konfiguration des Symbolpfads, da...
-
Mehrfachstarts einer Windows-App verhindern — Benannte Mutexe und das Aktivieren des vorhandenen Fensters beim zweiten Start
Dieser Artikel ordnet die klassische Anforderung für Business-Windows-Apps – „dieselbe App darf nicht zweimal starten“ – rund um einen benannten Mutex. Wir b...
-
Win32-APIs sicher aus C# aufrufen — Ein praxistauglicher P/Invoke-Leitfaden (DllImport / LibraryImport / CsWin32)
Eine praxisnahe Übersicht darüber, worauf beim Aufruf von Win32-APIs und nativen DLLs aus C# über P/Invoke zu achten ist. Behandelt die Unterschiede zwischen...
-
Entra-ID-Authentifizierung in WinForms/WPF-Apps integrieren — Eine praxistaugliche Architektur mit MSAL.NET und dem WAM-Broker
Ein praxisnaher Blick auf die Integration der Entra-ID-Authentifizierung (früher Azure AD) in WinForms/WPF-Desktop-Apps: das Public-Client-Denken, wo ROPC he...
-
Datum, Uhrzeit und Zeitzonen in Business-Apps — Von den Fallstricken von DateTime über das UTC-Speicherprinzip bis zum Testdesign
Zeitstempel verschieben sich nach einer Servermigration um neun Stunden; nur beim Auslandsbüro springt das Datum auf den Vortag zurück – wir verfolgen Datums...
-
UI-Automatisierungstests für Windows-Desktop-Apps — Wie UI Automation funktioniert und wie man mit FlaUI robuste Tests baut
Ein praxisnaher Leitfaden zu UI-Automatisierungstests für WinForms-/WPF-Apps, ausgehend davon, wie Windows UI Automation selbst funktioniert (der Baum, Autom...
-
High-DPI-Unterstützung in WPF — Warum es trotz „eigentlich DPI-bewusst“ immer noch verschwimmt und durchblutet, und wie Sie es beheben
WPF layoutet die UI in DIPs (1/96 Zoll) und ist von Anfang an System DPI Aware, doch das Verschieben eines Fensters auf einen Monitor mit anderer DPI lässt d...
-
Warum EXCEL.EXE-Prozesse nach C#-Excel-COM-Automatisierung bestehen bleiben — Muster zur Referenzfreigabe und die Ersatzentscheidung
Ein praxisnaher Blick darauf, warum EXCEL.EXE-Prozesse nach der Automatisierung von Excel aus C# über Microsoft.Office.Interop.Excel bestehen bleiben, erklär...
-
High-DPI-Unterstützung in WinForms — Warum die UI auf 4K-Monitoren verschwimmt oder zerbricht, und wie Sie das praktisch beheben
Dieser Artikel ordnet die Gründe, warum WinForms-Apps auf 4K-Monitoren und bei 150 % Skalierung verschwimmen oder ihr Layout zerbricht, ausgehend von DPI-Vir...
-
Windows-Prozesskommunikation richtig wählen ── Eine Entscheidungstabelle für Named Pipes / TCP / gRPC / Shared Memory / COM
Wie wählt man den richtigen Weg, damit Windows-Anwendungen miteinander sprechen? Dieser Artikel ordnet Named Pipes, lokales TCP, gRPC, Shared Memory, dateiba...
-
SQLite aus C# in Business-Apps nutzen — WAL-Modus, exklusive Sperren, Schutz vor Datenbankbeschädigung und wann sich EF Core lohnt
Ein praxisnaher Überblick zur Einbindung von SQLite in eine Windows-Businessanwendung mit Microsoft.Data.Sqlite: Verbindungszeichenfolgen und Pooling, die Fu...
-
Windows-Dienste erstellen und betreiben ── Von der Abgrenzung zur Aufgabenplanung bis zur Umwandlung eines BackgroundService in einen Dienst
Sollte ein Hintergrundprozess ein Windows-Dienst werden, oder reicht die Aufgabenplanung? Dieser Artikel ordnet die Entscheidungstabelle, den Aufbau eines Di...
-
Ist WebView2 der richtige Nachfolger für den IE-Modus? ── Die ActiveX-Einschränkung und ein realistisches Migrationsdesign
Wir behandeln die Grundstruktur von WebView2, die Verteilungsstrategien Evergreen und Fixed Version, die Falle der Benutzerdatenordner, das Zusammenspiel von...
-
Wie Windows-Apps lokale Daten speichern sollten — Entscheidungstabelle für SQLite / JSON / Registrierung / Access
Wo und womit sollte eine Windows-Desktopanwendung ihre Daten speichern? Dieser Artikel ordnet die Wahl zwischen AppData und ProgramData sowie die Stärken und...
-
Was ist eine PDB (Program Database)? — Debugging-Informationen, Symbole und Source Link verstehen
Was eine PDB (Program Database) ist, was darin enthalten ist und was nicht, sowie der Zusammenhang mit Debug/Release, Portable PDB, Source Link, Symbolserver...
-
Was ist Roslyn? — C#-Code aus der Sicht des Compilers lesen, korrigieren und generieren
Ein Überblick über Roslyn (die .NET Compiler Platform): Syntax Tree, SemanticModel, Workspace, Analyzer, Source Generator sowie deren Einsatzmöglichkeiten un...
-
Windows-App-Outsourcing und Auftragsentwicklung: Was Sie vor der Beauftragung klären sollten
Bevor Sie die Entwicklung einer Windows-App outsourcen oder in Auftrag geben, sollten Sie folgende Punkte klären: Überarbeitung bestehender Software, Gerätei...
-
Algebraische Datentypen in .NET Framework / .NET verwenden — Zustände und Ergebnisse mit Typen entwerfen
Wie sich algebraische Datentypen – insbesondere Summentypen und diskriminierte Vereinigungen – in .NET Framework und .NET einsetzen lassen und welchen Nutzen...
-
Windows-Identitätswechseltoken richtig handhaben ── Rechte pro Thread ausleihen und sicher zurückgeben
Ein praxisorientierter Überblick über Windows-Identitätswechseltoken: Zugriffstoken, primäre Token, Thread-Token, Identitätswechselebenen, RevertToSelf und W...
-
Der Irrglaube, man könne über TCP pro Send genau eine Einheit empfangen ── Empfangslogik entwerfen, die es als Bytestrom behandelt
Wer bei TCP-Kommunikation davon ausgeht, in denselben Einheiten empfangen zu können, in denen mit Send oder Write gesendet wurde, riskiert Fragmentierung, Ve...
-
GC-Wartezeit von einem Speicherleck in .NET unterscheiden — Ein praktisches Verfahren, um wachsenden Speicher zu beobachten, zu vergleichen und zu belegen
Ein Verfahren, um bei einer .NET-Anwendung zu klären, ob wachsender Speicherverbrauch nur auf die Garbage Collection wartet oder tatsächlich ein Speicherleck...
-
PowerShell aus C# (CSharp) ausführen und die Ergebnisse als Objekte empfangen
Wie man PowerShell aus C# startet und das Ergebnis nicht als Zeichenkette, sondern als PSObject empfängt – ein praxisorientierter Überblick über das PowerShe...
-
Warum Windows so wurde, wie es heute ist: Die Evolution von Windows aus Entwicklersicht
Die Veränderungen von Windows 95 bis Windows 11 – nicht als visuelle Zeitleiste, sondern aus der Perspektive von Windows-App-Entwicklern: Kompatibilität, Sta...
-
Was ist ClickOnce? - Funktionsweise, Updates und wo es passt oder nicht, aus praktischer Sicht
Ein Überblick über ClickOnce, die Verteilungstechnologie für .NET-Windows-Desktopanwendungen: Manifeste, Updates, Cache, Signierung sowie passende und unpass...
-
Eine Checkliste für den sicheren Umgang mit Kindprozessen in Windows-Apps
Beim sicheren Umgang mit Kindprozessen in Windows-Apps zählt weniger die Start-API als der Besitz des Prozessbaums und das Design der Beendigung. Eine Einord...
-
Windows-Apps als Einzeldatei verteilen – Single Binaries und die Grenzen der OS-Abhängigkeit
Wenn Sie eine Windows-App auf 1 EXE reduzieren wollen, zählt der Unterschied zwischen einem einzigen Verteilungsartefakt und dem Wegfall der OS-Abhängigkeit ...
-
Fallstricke bei seriellen Kommunikationsanwendungen — von der Wiederverbindung bis zum Log-Design
Die Fallstricke serieller Kommunikationsanwendungen, die man bei Gerätekopplung und Messgerätesteuerung vermeiden möchte — aus praktischer Sicht zu Framing, ...
-
Checkliste vor der Migration von .NET Framework zu .NET
Eine praxisnahe Checkliste für die Zeit vor der Migration von .NET Framework zu .NET: Projekttypen, nicht unterstützte Technologien, NuGet-Abhängigkeiten, SD...
-
Was ist der .NET Generic Host? - Das Fundament für DI, Konfiguration und Logging
Wir ordnen die Rolle des Generic Host anhand seiner Beziehung zu DI, Konfiguration, Logging, IHostedService und BackgroundService ein und fassen aus der Prax...
-
Was ist .NET Native AOT? - Der Unterschied zu JIT und Trimming
Wir ordnen ein, was Native AOT ist, anhand der Unterschiede zu JIT, ReadyToRun, self-contained, single-file, trimming und Source Generators, und fassen aus d...
-
Die richtige Wahl unter .NETs drei Timern – PeriodicTimer/Timer/DispatcherTimer
Die Unterschiede zwischen PeriodicTimer, System.Threading.Timer und DispatcherTimer – und wie Sie sie für async-Verarbeitung, ThreadPool-Callbacks und WPF-UI...
-
Eine C# Native AOT DLL aus C/C++ aufrufen
Wie man eine C#-Klassenbibliothek mit Native AOT als native DLL veröffentlicht und Einstiegspunkte mit UnmanagedCallersOnly aus C/C++ aufruft – Einsatzbereic...
-
Warum .NET Generic Host und BackgroundService in Desktop-Apps verwenden
Wie sich Generic Host und BackgroundService nutzen lassen, um Start, periodische Verarbeitung, Beendigung, Logging, Konfiguration und DI in Windows-Tools und...
-
ActiveX / OCX heute behandeln - Entscheidungstabelle: Behalten, Kapseln, Ersetzen
Wenn Sie ActiveX / OCX vorfinden, ordnet dieser Artikel ein, ob Sie es behalten, kapseln oder ersetzen sollten - einschließlich 32-Bit/64-Bit, Registrierung,...
-
WPF/WinForms: async und der UI-Thread auf einem Blatt
Ordnet für WPF / WinForms, wohin await zurückkehrt, sowie die typischen Stolperstellen bei Dispatcher / Invoke, ConfigureAwait(false) und .Result / .Wait().
-
Praxisleitfaden für FileSystemWatcher - Umgang mit verpassten und doppelten Ereignissen
Wir ordnen die Verwendung von FileSystemWatcher und ihre Fallstricke entlang von verpassten Ereignissen, doppelten Benachrichtigungen, Fallen bei der Abschlu...
-
C# async/await-Praxis-Entscheidungstabelle – Task.Run und ConfigureAwait
Dieser Artikel ordnet die Best Practices für C# async/await – I/O-Wartezeiten, CPU-Berechnungen, Task.Run, ConfigureAwait(false) und fire-and-forget – anhand...