“.NET” 태그의 글
“.NET” 태그가 붙은 글 72건을 최신순으로 정리했습니다.
-
Time Travel Debugging ── 장기 가동에서 재현되지 않는 결함을 「녹화」해서 되감기
한 달에 한 번만 나오는 결함은 크래시 덤프로는 결과밖에 찍히지 않습니다. WinDbg의 Time Travel Debugging(TTD)으로 실행을 녹화해 되감는 방법을 TTD.exe의 녹화 설계, 링 버퍼, TTD.Calls 쿼리, 덤프와의 역할 분담까지 설명합니다.
-
인수는 왜 깨지는가 ── Windows 명령줄 인수의 규칙
Windows에는 인수의 배열이 존재하지 않으며, CreateProcess에 전달되는 것은 한 줄의 문자열이고 분할은 받는 쪽이 합니다. CommandLineToArgvW·CRT·.NET의 분할 규칙과 .NET의 ArgumentList, C++에서의 올바른 조립 방법을 설명합니다.
-
Windows 프린터 드라이버 제공 종료 ── 업무 앱의 장표·라벨 인쇄는 어떻게 대비할 것인가
Microsoft는 v3/v4 프린터 드라이버의 제공 종료를 단계적으로 진행하고 있으며, 2026년 7월부터는 IPP 클래스 드라이버가 우선됩니다. Windows protected print mode에서 무엇이 사라지는지, 업무 앱의 장표·라벨 인쇄가 어디에 의존하고 있는지를 점검...
-
사내 프록시와 Windows 앱 ── WinINET·WinHTTP·.NET의 프록시 해석을 정리한다
브라우저에서는 연결되는데 업무 앱만 사내 프록시를 넘지 못합니다. 원인은 대개 WinINET, WinHTTP, 환경 변수, .NET이 각각 어떤 프록시 설정을 읽는지가 어긋난 데 있습니다. PAC와 WPAD, 인증 프록시, TLS 검사, 원인 분리 절차까지 정리합니다.
-
멀티스레드 실무 베스트 프랙티스 .NET 편 ── 스레드를 늘리기 전에 정해 둘 것
「스레드를 만들었더니 가끔 죽거나 멈춘다」를 막는 설계의 정석을 .NET/C# 대상으로 정리합니다. 스레드를 직접 만들지 않고 Task에 맡기기, 공유 가변 상태 줄이기, 락의 규율, CancellationToken으로 정지 설계하기, UI 스레드 다루기까지 설명합니다.
-
WMI/CIM을 C#·PowerShell에서 쓰기 ── 하드웨어 정보 가져오기·프로세스 모니터링·원격 조회의 실무 가이드
PC 시리얼 번호 조회, 디스크 여유 공간 모니터링, 프로세스 시작 감지의 흔한 답이 WMI/CIM입니다. Get-CimInstance 등 CIM cmdlet 사용법과 구 Get-WmiObject에서의 이전, C#의 System.Management와 CIM API 구분, 실무 레시...
-
Windows I/O의 심층(제5회) ── NTFS의 내부 구조: MFT로 이해하는 파일 시스템
NTFS의 내부 구조를 그림으로 설명하는 연재 제5회입니다. MFT와 파일 레코드, 다중 데이터 스트림(Zone.Identifier), 하드 링크와 8.3 이름, reparse point, 두 종류의 저널, 스파스와 압축까지를 개발자 관점에서 정리합니다.
-
Windows I/O의 심층(제4회) ── 캐시 관리자: WriteFile은 언제 디스크에 도달하는가
Windows의 캐시 관리자를 그림으로 설명하는 연재 제4회입니다. 파일 매핑으로 구현된 캐시, read-ahead와 lazy write, FlushFileBuffers와 FILE_FLAG_NO_BUFFERING의 용도 구분, 전원 차단으로 데이터가 사라지는 조건까지 정리합니다.
-
Windows I/O의 심층(제3회) ── I/O 완료 포트(IOCP)와 .NET 스레드 풀: async/await의 지하실
I/O 완료 포트(IOCP)를 그림으로 설명하는 연재의 제3회입니다. 완료 큐와 스레드 수 제어를 하나로 묶은 설계, 동시성 값과 LIFO 해제, .NET 스레드 풀과 async/await 계속(continuation)의 실행 스레드까지 정리합니다.
-
MSMQ는 언제까지 쓸 수 있는가 ── 「deprecated조차 아닌」 레거시 큐의 마이그레이션 판단
MSMQ는 공식 deprecated 목록에 없는 한편, System.Messaging은 .NET Framework에만 있어 .NET으로의 이전을 가로막습니다. 폐지 소문과 실제 현재 위치를 사실로 정리하고, 계속 쓸지·옮길지의 판단 기준과 이전 대상 고르는 법을 정리합니다.
-
Windows I/O의 심층(제2회) ── 동기 I/O와 비동기 I/O: OVERLAPPED의 진짜 의미
Windows의 동기 I/O와 비동기 I/O(overlapped I/O)를 그림으로 설명하는 연재의 제2회입니다. FILE_FLAG_OVERLAPPED의 의미, 완료 통지의 네 가지 방식, 비동기인데도 동기 완료되는 조건, 취소 절차, .NET과의 대응까지 정리합니다.
-
Windows I/O 내부 구조(제1회) ── 모든 읽기·쓰기는 IRP가 된다: I/O 시스템의 전체 그림
Windows I/O 시스템을 밑바닥부터 설명하는 연재의 제1회입니다. Object Manager namespace, driver·device·file 세 가지 object, IRP 수명 주기, CloseHandle 뒤에서 일어나는 일까지를 그림으로 정리합니다.
-
PowerShell에서 COM과 .NET을 호출하는 실무 ── 스크립트가 닿는 범위를 한 번에 넓히기
PowerShell에서 .NET 클래스를 호출하는 방법, Add-Type으로 C#과 Win32 API를 넣는 방법, COM 조작, Excel 프로세스 잔류와 뒷정리, Office 무인 실행이 지원되지 않는 이유, 5.1과 7의 차이까지 실무 관점에서 설명합니다.
-
업무 시스템의 코드 설계 ── 상품 코드·고객 코드를 정하는 법과 check digit
상품 코드·고객 코드 등 업무 시스템의 코드 체계를 정하는 실무 가이드. 유의미 코드와 무의미 일련번호 판단표, JAN·Luhn 등의 check digit 산식과 C# 구현, Excel의 선행 0 소실 대책, 자릿수 초과와 이행까지 정리합니다.
-
DLL・COM 인터페이스의 하위 호환성 ── 어떤 변경이 호출 측을 깨뜨리는지의 판단표
DLL이나 COM 컴포넌트의 어떤 변경이 호출 측을 깨뜨리는지. 바이너리 호환・소스 호환・동작 호환의 3계층을 정리하고, 변경 내용별 판단표, COM 인터페이스 불변의 철칙, semver 운용까지를 실무 가이드로 정리합니다.
-
업무 앱의 DB 스키마를 버전 관리한다 ── 「고객사마다 DB가 다르다」를 막는 마이그레이션 실무
고객사마다 흩어진 업무 앱의 DB 스키마를 버전 관리하는 실무 가이드. PRAGMA user_version과 전진 마이그레이션의 C# 구현, EF Core Migrations·DbUp·자체 구현 판단표, 2단계 릴리스까지 정리합니다.
-
WinForms / WPF 앱의 CI/CD 실전 ── GitHub Actions로 빌드부터 서명·배포까지 자동화하기
WinForms / WPF 앱의 CI/CD를 GitHub Actions로 구성하는 실무 가이드입니다. windows-latest에서 빌드+테스트를 돌리는 최소 YAML, 태그 기반 버전 부여, signtool 서명 연동, MSI/MSIX/ClickOnce/xcopy별 CI 통합 판...
-
테스트 없는 레거시 업무 앱을 안전하게 수정하기 ── 특성화 테스트와 리팩터링 실무
테스트가 없는 업무 앱을 안전하게 수정하려면, 현재 동작을 고정하는 특성화 테스트(골든 마스터 기법)의 절차, 이음매(seam)를 만드는 방법, 리팩터링과 기능 추가를 섞지 않는 운영 규칙을 C# 예제로 설명합니다.
-
자사 개발 Windows 앱이 바이러스로 오인되면 ── Microsoft Defender 오탐 대응과 성능 영향에 대처하는 법
자사 개발 Windows 앱이 Microsoft Defender에 오탐되었을 때의 정규 대응을 정리합니다. 현대 바이러스 백신의 동작 방식, Microsoft에 오탐을 신고하는 방법, 격리에서 복원하기, 제외 설정을 올바르게 넣는 방법과 그 위험까지 설명합니다.
-
슬립・최대 절전 모드・Modern Standby와 장시간 가동 앱 ── '한밤중에 멈춰 있었다'를 설계로 막는다
장시간 동작하는 Windows 앱이 '아침에 보니 멈춰 있었다'가 되는 원인을 S3 슬립/최대 절전 모드/Modern Standby의 차이에서 정리합니다. 슬립 중 타이머와 TCP 연결의 동작, SetThreadExecutionState로 억제하는 방법까지 설명합니다.
-
Windows on Arm에서 업무 앱은 동작하는가 ── x64 에뮬레이션(Prism)과 네이티브 DLL·COM의 현실
「Windows on Arm에서 업무 앱은 동작하는가」에 개발자와 사내 IT를 위해 답합니다. x64 에뮬레이션(Prism)의 구조, 드라이버처럼 동작하지 않는 계층, .NET의 AnyCPU와 P/Invoke 문제, Arm 대응 체크리스트까지 정리합니다.
-
MAX_PATH와 Windows 경로·파일 이름의 함정 ── 260자 제한, 예약 이름, 끝의 점, 대소문자
「파일을 찾을 수 없습니다」의 단골 원인인 경로·파일 이름 제한을 정리합니다. MAX_PATH=260자의 구성, LongPathsEnabled로 긴 경로를 켜는 방법, CON 등의 예약 이름, 끝 점의 정규화, Path.Combine의 함정까지 설명합니다.
-
네트워크 드라이브와 UNC 경로의 함정 ── 업무 앱에서 파일 서버(공유 폴더)를 다루는 실무
업무 앱에서 공유 폴더로 출력·감시할 때 자주 겪는 문제를 정리합니다. 드라이브 문자(Z:)가 서비스에서 보이지 않는 이유, 실행 계정별로 필요한 권한, 오류 1219, FileSystemWatcher 주의점까지 설명합니다.
-
Windows 앱의 작업 트레이 상주와 토스트 알림 ── NotifyIcon의 함정과 AppNotification 고르는 법
업무용 Windows 앱의 작업 트레이 상주와 토스트 알림 구현을 정리합니다. NotifyIcon의 올바른 사용법, Explorer 재시작 시 재등록, 토스트 API 3종의 선정 판단표, 알림이 도착하지 않는 경우까지 설명합니다.
-
VB6 앱은 언제까지 동작하는가 ── 런타임 지원 현황과 현실적인 .NET 이전 진행 방법
VB6 앱은 언제까지 동작할까요. 런타임은 Windows 11에서도 동작 대상이고 IDE는 지원이 종료된 현황을 정리하고, 전면 재작성·자동 변환·단계 이전의 판단표, 이전 전 자산 파악, VB6와 .NET의 비호환까지 정리합니다.
-
업무 앱의 연호·공휴일·마감일 처리 ── 연호 변경에 강한 설계와 JapaneseCalendar·영업일 계산 실무
연호 표시, 공휴일을 제외한 영업일 계산, 마감일 처리처럼 일본 업무 앱에 특유한 날짜 처리를 정리합니다. JapaneseCalendar와 연호 변경에 강한 설계, 내각부 CSV로 공휴일 마스터를 운영하는 방법, AddMonths의 월말 조정 사양을 바탕으로 한 마감일 계산까지 설...
-
WinForms/WPF 앱의 다국어화 ── resx·satellite assembly·culture 전환의 실무
Windows 데스크톱 앱의 다국어화를 정리합니다. CurrentCulture와 CurrentUICulture의 차이, resx와 satellite assembly의 구조, WPF에서 현실적인 방식 선택, 런타임 언어 전환, 서식·RTL까지 설명합니다.
-
CSV는 「그냥 텍스트」가 아닙니다 ── C# 업무 앱의 CSV 실무(문자 코드·Excel 호환·인젝션 대책)
업무 앱 CSV 입출력의 전형적인 사고──Split(',') 자체 파싱, BOM 없는 UTF-8의 문자 깨짐, 앞자리 0 소실──을 정리하고, RFC 4180 규칙, Shift_JIS 취급, TextFieldParser를 이용한 안전한 읽기까지 설명합니다.
-
HttpClient를 using으로 감싸면 안 됩니다 ── C# 업무 앱의 HTTP 통신 실무(생성 패턴·타임아웃·재시도)
C#의 HttpClient는 매번 using으로 생성하면 소켓이 고갈되고, static으로 두면 DNS 변경을 따라가지 않습니다. PooledConnectionLifetime과 IHttpClientFactory를 쓰는 올바른 생성 패턴, 타임아웃 설계, 재시도까지 정리합니다.
-
PerfView와 dotnet-trace로 「느림」을 특정한다 ── .NET 성능 조사의 실무 입문
업무 앱이 「느리다」「CPU가 붙어 있다」일 때, 어떤 도구로 무엇을 볼지. PerfView와 dotnet-trace의 역할 분담, CPU 샘플링 읽는 법, ThreadTime으로 블록 시간을 조사하는 절차까지 실무 조사 흐름을 정리합니다.
-
Windows 이벤트 로그·ETW 입문 ── 업무 앱 로그를 OS 표준 메커니즘에 올리기
이벤트 로그와 ETW는 운영 담당자와 OS 표준 도구에서 보이는 별도 계층의 기록입니다. 파일 로그를 포함한 세 수단의 역할 분담, .NET에서의 기록 방법, EventSource를 통한 ETW 계측, 수집·조사의 실무와 함정까지 설명합니다.
-
appsettings.json만이 전부가 아닙니다 ── Windows 업무 앱의 구성 관리 실무(환경별 설정·비밀 정보·쓰기 위치)
Windows 업무 앱의 구성 관리를 정리합니다. appsettings.json의 계층화, IOptions/IOptionsMonitor의 용도 구분, 환경별 설정, 쓰기가 가능한 설정의 위치, 비밀 정보의 취급, app.config에서의 마이그레이션까지 설명합니다.
-
Windows 업무 앱의 인쇄와 PDF 출력 ── System.Drawing.Printing / WPF / 장표 라이브러리 구분
PrintDocument로 하는 WinForms 인쇄, WPF의 FlowDocument/FixedDocument 인쇄, PDF 출력 선택지를 요건별 판단표로 정리합니다. 페이지 나눔 제어, DPI 어긋남, Windows 서비스에서의 인쇄 위험까지 설명합니다.
-
OSI 참조 모델을 선명하게 그려 보기 ── HTTP 요청 1개를 7계층으로 해부한다
OSI 참조 모델을 실물로 이해합니다. HTTP GET 요청을 실어 나르는 Ethernet 프레임을 C#으로 조립해 해부하고, 7계층이 중첩된 모습을 Wireshark로 확인합니다. 각 계층과 .NET API의 대응, 장애 원인 분리까지 정리합니다.
-
Windows 세션 분리를 어떻게 이해할 것인가 ── Session 0·RDP·다중 사용자 동시 실행
Windows 앱 개발자가 혼동하기 쉬운 「세션」 개념을 정리합니다. 서비스가 UI를 띄울 수 없는 Session 0 분리의 이유, RDP 연결 시 세션의 동작, named object의 세션 분리, 공유 PC·RDS 환경에서 자주 나오는 설계 실수까지 실무 관점에서 설명합니다.
-
WinDbg + SOS로 크래시 덤프 읽기 ── 수집 이후의 실무 분석 입문
Windows 크래시 덤프를 WinDbg와 SOS 확장으로 읽는 절차를 설명합니다. 심볼 경로 설정, !clrstack과 !dumpheap으로 예외와 메모리 누수를 추적하는 방법, !analyze -v, dotnet-dump analyze와의 역할 분담까지 정리합니다.
-
Windows 앱의 다중 실행 방지 ── 이름 있는 Mutex와 이중 실행 시 활성화
업무용 Windows 앱의 다중 실행 방지를 이름 있는 Mutex로 구현하는 방법을 정리합니다. Global\와 Local\ 차이로 생기는 RDP 환경의 함정, AbandonedMutexException, 기존 인스턴스를 앞으로 가져오기까지 설명합니다.
-
C#에서 Win32 API를 안전하게 호출하기 ── P/Invoke 실무 가이드(DllImport / LibraryImport / CsWin32)
C#에서 Win32 API를 P/Invoke로 호출할 때 실무에서 짚을 포인트를 정리합니다. DllImport와 LibraryImport의 차이, CsWin32를 이용한 자동 생성, 문자열 마샬링의 함정, SafeHandle, 32/64bit 차이까지 구현 예와 함께 설명합니다.
-
WinForms/WPF 앱에 Entra ID 인증을 넣는 방법 ── MSAL.NET과 WAM 브로커의 실무 구성
WinForms/WPF 데스크톱 앱에 Entra ID 인증을 넣는 절차를 정리합니다. 퍼블릭 클라이언트의 개념, 앱 등록, MSAL.NET의 AcquireTokenSilent, WAM 브로커, 토큰 캐시 영속화까지 설명합니다.
-
업무 앱의 날짜·시각과 타임존 ── DateTime의 함정부터 UTC 저장 원칙, 테스트 설계까지
서버를 옮겼더니 시각이 9시간 어긋난다──날짜·시각 사고의 원인을 DateTime의 Kind와 암묵 변환부터 정리합니다. DateTimeOffset과의 구분, UTC 저장 원칙, TimeZoneInfo와 서머타임, TimeProvider를 이용한 테스트 설계까지 설명합니다.
-
Windows 데스크톱 앱의 UI 자동 테스트 ── UI Automation 구조와 FlaUI로 만드는 잘 깨지지 않는 테스트
WinForms/WPF 앱의 UI 자동 테스트를 Windows UI Automation 구조부터 정리합니다. FlaUI 최소 구현, AutomationId 설계와 조건 대기로 잘 깨지지 않게 하는 방법, CI 무인 실행의 함정까지 실무 관점에서 설명합니다.
-
WPF의 고DPI 대응 ── 「DPI에 강해야 하는데」 흐려지고 번지는 원인과 대처
WPF는 System DPI Aware이지만, DPI가 다른 모니터로 옮기면 전체가 번지고 비트맵은 흐려집니다. 원인 분리, Per-Monitor DPI 대응, UseLayoutRounding 등 정석 대처, WindowsFormsHost 혼재의 함정까지 정리합니다.
-
C# Excel 조작에서 EXCEL.EXE가 남는 문제 ── COM 참조 해제 패턴과 교체 판단
C#에서 Excel을 COM으로 조작하면 EXCEL.EXE 프로세스가 남는 문제를 COM 참조 카운트와 RCW 구조로 정리합니다. 2-dot 규칙의 함정, ReleaseComObject와 GC에 의한 해제 패턴, 교체 판단까지 설명합니다.
-
WinForms의 고DPI 대응 ── 4K 모니터에서 흐려지거나 레이아웃이 깨지는 원인과 현실적인 대처
4K 모니터에서 WinForms 앱이 흐려지거나 레이아웃이 깨지는 원인을 DPI 가상화와 DPI 인식 모드(System Aware / Per-Monitor V2)로 정리합니다. .NET과 .NET Framework의 설정 방법, AutoScaleMode의 함정까지 설명합니다.
-
Windows의 프로세스 간 통신을 어떻게 고를까 ── Named Pipe / TCP / gRPC / 공유 메모리 / COM 판단표
Windows 앱끼리의 연동 수단을 어떻게 고를지 정리합니다. Named Pipe, 로컬 TCP, gRPC, 공유 메모리, 파일 연동, COM의 강점과 함정을 판단표로 정리하고, 정석 구성과 Named Pipe 구현 예까지 설명합니다.
-
C#에서 SQLite를 업무 앱에 쓰기 ── WAL 모드·배타 제어·손상 대책·EF Core와의 구분
Microsoft.Data.Sqlite로 SQLite를 업무 앱에 넣는 실무 지식을 정리합니다. WAL 모드, SQLITE_BUSY와 쓰기 경로 일원화, 타입 매핑의 함정, VACUUM INTO 백업, EF Core와의 구분까지 설명합니다.
-
Windows서비스 만드는 법과 운영 ── 작업 스케줄러와의 구분부터 BackgroundService의 서비스화까지
상주 처리를 Windows서비스로 둘지, 작업 스케줄러로 충분한지. 판단표와 .NET Worker Service로 서비스를 만드는 방법, 실행 계정·복구 옵션·안전한 중지 처리까지 실무 관점에서 정리합니다.
-
IE모드의 다음은 WebView2로 충분한가 ── ActiveX가 동작하지 않는 제약과 현실적인 전환 설계
WebView2의 기본 구조, Evergreen과 Fixed Version의 배포 전략, 사용자 데이터 폴더의 함정, 네이티브와 Web의 연동 방법, 그리고 「ActiveX는 동작하지 않는다」는 제약을 전제로 한 IE모드 의존 시스템에서의 현실적인 전환 순서를 사내 시스템 관점에서...
-
Windows 앱 데이터 저장 위치 고르기 ── SQLite / JSON / 레지스트리 / Access 판단표
Windows 데스크톱 앱의 데이터를 어디에, 무엇으로 저장할지. AppData/ProgramData 구분, SQLite·JSON 파일·레지스트리·Access(.accdb) 각각의 강점과 함정을 판단표와 함께 정리하고, 손상 대책과 비트 수 문제까지 실무 관점에서 설명합니다.
-
PDB(프로그램 데이터베이스)란 무엇인가 - 디버그 정보·심볼·Source Link 이해하기
PDB(Program Database / 프로그램 데이터베이스)란 무엇인지, 무엇이 들어 있고 무엇이 들어 있지 않은지, Debug / Release, Portable PDB, Source Link, 심볼 서버, 덤프 분석과의 관계까지 실무 관점에서 정리합니다.
-
Roslyn이란 무엇인가 ── 컴파일러의 시각으로 C# 코드를 읽고 고치고 생성하기
Roslyn(.NET Compiler Platform)의 개요, Syntax Tree, SemanticModel, Workspace, Analyzer, Source Generator, 실무에서의 활용처와 주의점을 정리합니다.
-
Windows 앱 외주·수탁 개발을 의뢰하기 전에 정리할 점
Windows 앱 외주·수탁 개발을 의뢰하기 전에, 기존 소프트웨어 수정, 장치 연동, COM/ActiveX, 배포·업데이트, 유지보수를 정리하는 포인트를 설명합니다.
-
.NET Framework / .NET에서 대수적 데이터 타입 사용하기 ── 상태와 결과를 타입으로 표현하는 설계
대수적 데이터 타입, 특히 합 타입·discriminated union을 .NET Framework와 .NET에서 쓰는 방법과 이점을 F#, C#의 클래스 계층, record, OneOf, C# 15 union preview까지 포함해 정리합니다.
-
Windows impersonation token을 올바르게 다루기 ── 스레드 단위 권한 차용과 안전한 되돌리기
Windows impersonation token에 대해 access token, primary token, thread token, impersonation level, RevertToSelf, .NET의 WindowsIdentity.RunImpersonated까지, 실무에서 안...
-
TCP에서 Send한 단위마다 Receive할 수 있다는 오해 ── 바이트 스트림으로 다루기 위한 수신 설계
TCP 통신에서 Send나 Write한 단위마다 수신할 수 있다고 생각하면 분할·결합·문자 깨짐·프로토콜 손상이 발생합니다. TCP를 바이트 스트림으로 다루고 애플리케이션 쪽에서 프레이밍하는 사고방식과 .NET/C# 구현 예를 정리합니다.
-
.NET에서 GC 미회수와 메모리 누수를 가려내기 ── 늘어나는 메모리를 관측·비교·증명하는 실무 절차
.NET 애플리케이션에서 메모리가 늘어나는 이유가 아직 GC가 회수하지 않아서인지, 실제 메모리 누수인지를 dotnet-counters, dotnet-gcdump, dotnet-dump로 가려내는 절차를 정리합니다.
-
C#(CSharp)에서 PowerShell을 실행하고 결과를 객체로 받는 방법
C#에서 PowerShell을 실행하고 결과를 문자열이 아닌 PSObject로 받는 방법을, PowerShell SDK, AddCommand, AddParameter, BaseObject, Properties, 오류 처리까지 실무 관점에서 정리합니다.
-
Windows는 왜 지금의 모습이 되었나: 개발자가 보는 역대 Windows의 진화
Windows 95부터 Windows 11까지의 변화를, 겉모습의 연표가 아니라 호환성, 안정성, 권한 관리, 드라이버, Win32, .NET, 보안 등 Windows 앱 개발자의 시점에서 정리합니다.
-
ClickOnce란 무엇인가 - 동작 방식, 업데이트, 적합한 경우와 그렇지 않은 경우를 실무 관점에서 정리
.NET의 Windows 데스크톱 앱 배포에 쓰이는 ClickOnce에 대해, 매니페스트, 업데이트, 캐시, 서명, 적합한 경우와 그렇지 않은 경우를 Mermaid 다이어그램과 함께 정리합니다.
-
Windows 앱에서 자식 프로세스를 안전하게 다루는 체크리스트
Windows 앱에서 자식 프로세스를 안전하게 다루려면, 시작 API보다 프로세스 트리의 소유권과 종료 절차 설계가 중요합니다. Job Object, 종료 전파, 표준 입출력, watchdog을 정리합니다.
-
Windows 앱의 1파일 배포 - 싱글 바이너리와 OS 의존의 한계
Windows 앱을 1 EXE로 모으고 싶을 때, 배포물을 1개로 만드는 것과 OS 의존을 없애는 것의 차이를 .NET, C++, WebView2, WinUI, 서비스, 드라이버까지 정리합니다.
-
시리얼 통신 앱의 함정 - 재접속과 로그 설계까지
장치 연계나 계측기 제어에서 피하고 싶은 시리얼 통신 앱의 함정을, 프레이밍, 타임아웃, RTS/CTS, DTR/RTS, 재접속, 로그 설계까지 실무 관점으로 정리합니다.
-
.NET Framework에서 .NET으로 마이그레이션하기 전 체크리스트
.NET Framework에서 .NET으로 마이그레이션하기 전에 프로젝트 종류, 미지원 기술, NuGet 의존성, SDK 스타일, WPF/WinForms, CI/CD, 운영을 확인하는 실무 체크리스트입니다.
-
.NET Generic Host란 - DI·설정·로그의 토대
Generic Host의 역할을 DI, 설정, 로그, IHostedService, BackgroundService의 관계로 정리하고, 어디서 효과가 나고 어디서 과한지를 실무 관점에서 정리합니다.
-
.NET Native AOT란 무엇인가 - JIT·trimming과의 차이
Native AOT가 무엇인지 JIT, ReadyToRun, self-contained, single-file, trimming, source generator와의 차이부터 정리하고, 잘 맞는 경우와 까다로운 경우를 실무 관점에서 정리합니다.
-
.NET 타이머 3종의 용도 구분 - PeriodicTimer/Timer/DispatcherTimer
PeriodicTimer / System.Threading.Timer / DispatcherTimer의 차이와, async 처리, ThreadPool callback, WPF UI 업데이트에서 어떻게 구분할지 정리합니다.
-
C# Native AOT DLL을 C/C++에서 호출하는 방법
C# 클래스 라이브러리를 Native AOT로 네이티브 DLL로 발행하고, UnmanagedCallersOnly 엔트리 포인트를 C/C++에서 호출하는 구성을, 쓰임새와 구현 패턴, 주의점에서 정리합니다.
-
.NET Generic Host와 BackgroundService를 데스크톱 앱에서 쓰는 이유
Windows 도구나 상주 앱에서 시작, 주기 처리, 종료 처리, 로그, 설정, DI를 정리하기 위해 Generic Host와 BackgroundService를 어떻게 쓰는지 정리합니다.
-
ActiveX / OCX를 지금 어떻게 다룰 것인가 - 남길지・감쌀지・교체할지 판단표
ActiveX / OCX를 만났을 때 남길지・감쌀지・교체할지 가운데 무엇을 고를지를, 32bit / 64bit, 등록, 브라우저 의존, 벤더 보수까지 포함해 정리합니다.
-
WPF/WinForms의 async와 UI 스레드를 한 장으로 정리
WPF / WinForms에서 await 후의 복귀 위치, Dispatcher / Invoke, ConfigureAwait(false), .Result / .Wait()가 막히는 지점을 정리합니다.
-
FileSystemWatcher 실무 가이드 - 누락과 중복 대책
FileSystemWatcher 사용법과 주의점을 누락, 중복 알림, 완료 판정의 함정, 재스캔, 원자적 claim, idempotency 관점에서 정리합니다.
-
C# async/await 실무 판단표 - Task.Run과 ConfigureAwait
C# async/await 베스트 프랙티스를 I/O 대기, CPU 계산, Task.Run, ConfigureAwait(false), fire-and-forget 판단표와 함께 정리합니다.