주말 아침 - 주간 닷넷 #14

한 주 동안 .NET 생태계에서 있었던 주요 이슈와 아티클, 기술 트렌드를 정리해 소개합니다.


:pushpin: 새 Windows 버전에서 .NET Framework 3.5가 독립 설치(Standalone)로 전환

  • 저자: Jeremy Likness (.NET Team)
  • 태그: #dotnetframework #windows11 #deployment #eos

주요 내용

  • Windows 11 Insider Preview Build 27965부터 .NET Framework 3.5가 Windows 구성요소에서 제외되고 별도 설치로 제공
  • 적용 범위: Windows 11 Insider Build 27965 이후(Windows 10, Windows 11 25H2까지는 영향 없음)
  • .NET Framework 3.5 지원 종료(2029-01-09) 일정에 맞춰 마이그레이션 계획 수립을 권장
  • 설치/호환성/이행 경로는 Microsoft Learn 가이드로 안내

:pushpin: WPF 메모리 누수: RAM을 잡아먹는 정적 이벤트 함정

https://medium.com/@CSharpAlchemist/wpf-memory-leaks-the-static-event-trap-that-eats-your-ram-f9b2b8551a6a

  • 저자: The C# Alchemist
  • 태그: wpf dotnet #memory #gc

주요 내용

  • 정적(static) 이벤트 구독이 창/뷰 인스턴스를 GC에서 “살아있게” 만들어 누수를 유발할 수 있음
  • unsubscribe 누락 시 닫힌 창도 참조가 남아 수거되지 않는 이유를 예제로 재현
  • 간단한 반복 생성/폐기 시나리오로 누수 관찰 흐름을 제시
  • 해결: 수명 관리, 약한 이벤트(WeakEvent) 등으로 구독/해제 구조를 정리

:pushpin: System.Text.Json + TypeInfoResolver Modifier로 프로퍼티 암호화하기

  • 저자: Steve Gordon
  • 태그: dotnet #systemtextjson #security #serialization

주요 내용

  • 문서 DB/이벤트/로그 등에서 민감 프로퍼티를 직렬화 시 암호화, 역직렬화 시 복호화하는 요구를 소개
  • Attribute로 암호화 대상 프로퍼티를 표시하는 설계를 제안
  • DefaultJsonTypeInfoResolver Modifiers로 JsonTypeInfo/JsonPropertyInfo 계약을 수정하는 방식 설명
  • AES-GCM 기반 AesGcmDataEncryptor 구현으로 암호화/복호화 핵심 API를 구성
  • nonce/tag를 포함한 페이로드 구조와 길이 계산 포인트를 설명
  • Span<T> 중심 저할당 구현을 통해 성능/할당 비용을 함께 고려

:pushpin: 공변성과 불변성에 대해 깊게 파고들기

  • 저자: Jeremy Davis
  • 태그: csharp #generics #variance #immutability

주요 내용

  • 제네릭 variance(공변/반공변) 규칙과 불변성(immutability)의 연결을 사례로 설명
  • 읽기 전용/불변 컬렉션에서 타입 안전성이 중요한 이유를 정리
  • 대입 가능성 규칙이 인터페이스/컬렉션 API 설계에 미치는 영향을 다룸
  • 단순 문법이 아니라 “왜 이런 제약이 필요한가”에 초점

:pushpin: .NET에서 예외 vs Result 패턴: 성능 벤치마크

  • 저자: Gramli
  • 태그: dotnet #performance #exceptions #benchmarkdotnet

주요 내용

  • 예외 던지기 vs Result 반환을 “성공/실패 경로”로 나눠 비교하는 벤치마크 설계
  • BenchmarkDotNet 사용, async 경계 비용은 Task.Yield()로 포함
  • 여러 검증 레이어를 통과시키며 에러 전파 비용을 측정
  • “예외는 예외 상황, Result는 흐름 제어” 같은 선택 기준을 함께 논의

:pushpin: try-catch 혼돈에서 구조화된 탄력성으로: Polly가 .NET 앱을 바꾸는 방법

https://medium.com/@sugumar.p/from-try-catch-chaos-to-structured-resilience-how-polly-transforms-net-apps-32216011209a

  • 저자: Sugumar Panneerselvam
  • 태그: dotnet #polly #resilience #reliability

주요 내용

  • 흩어진 try/catch가 만드는 중복/일관성/관측성 저하 문제를 제기
  • Polly로 재시도/서킷 브레이커/타임아웃을 정책으로 구성하는 흐름을 소개
  • 일시적/영구적 실패에 따라 정책을 분리해야 한다는 포인트를 강조
  • 로깅/메트릭과 결합해 운영 가능한 복원력(resilience) 설계를 지향

:pushpin: GC가 구해주지 않았다: .NET에 가비지 컬렉션이 있어도 리소스를 누수시킨 방법

https://medium.com/@curiosity.orbit/gc-didnt-save-me-how-i-leaked-resources-even-though-net-has-garbage-collection-642dcdd1e61e

  • 저자: Curious Orbit
  • 태그: dotnet #gc #idisposable #resources

주요 내용

  • GC는 관리 객체만 수거하며, 파일/소켓/핸들 등은 IDisposable로 명시 해제가 필요
  • Dispose 누락, 이벤트/타이머/캐시 참조 유지 등 대표 누수 패턴을 정리
  • using/await using으로 수명 관리를 습관화하라고 조언
  • 프로파일러/로깅으로 누수 추적에 접근하는 흐름을 소개

:pushpin: 공유 라이브러리가 공유 족쇄가 되는 과정

  • 저자: Steven Stuart
  • 태그: #architecture #libraries #coupling

주요 내용

  • 공유 라이브러리 의존이 결합도 상승, 배포 병목, 버전 지옥을 유발한다고 지적
  • “공유=재사용”이 운영/조직 비용을 키울 수 있음을 사례로 설명
  • API 안정성/하위호환/릴리스 프로세스/소유권(ownership) 이슈를 짚음
  • 대안으로 계약(Contract) 중심, 복제+독립 진화, 경계 재설계를 제안

:pushpin: .NET 10 Linux 지원: 현대 개발자를 위한 결정판 가이드

https://medium.com/@ahmad.sohail/net-10-linux-support-the-definitive-guide-for-modern-developers-7f0db7490■■7

  • 저자: Ahmad Sohail
  • 태그: dotnet10 linux #containers #deployment

주요 내용

  • Linux에서 .NET 10 설치/운영 관점과 지원 범위를 정리(대표 배포판/Alpine 등)
  • 배포판별 설치 커맨드와 dotnet-install.sh 예시를 제공
  • 컨테이너 이미지 선택/배포 팁을 소개
  • ARM64 publish 예시와 기본 트러블슈팅(PATH, CA 인증서 등)을 정리

:pushpin: Avalonia for VS Code: 프리뷰 공개

  • 저자: Avalonia UI
  • 태그: avalonia #vscode #tooling xaml

주요 내용

  • VS Code에서 Avalonia 개발을 지원하는 확장(프리뷰) 공개
  • XAML/프로젝트 편집 경험 개선과 빠른 피드백 루프를 목표로 함
  • Visual Studio/Rider 외 워크플로 옵션을 확장
  • 프리뷰 단계이므로 기능 범위/제약/로드맵 확인을 권장

:bookmark_tabs: 가벼운 읽을거리

후보 항목 중 메인 이슈로 선정되지 않은 가벼운 읽을거리들


C# 자동 DI: Needlr 완전 가이드

  • services.AddTransient<...> 같은 수동 등록 보일러플레이트를 줄이는 자동 등록 접근을 소개
  • 어셈블리 스캔/규칙 기반 등록과 소스 생성(AOT) 옵션을 개괄

번거로움 없이 VS Code 테마 만들기: 확장 개발

  • VS Code 테마 제작 과정을 “생각보다 빠르게 만들 수 있다”는 경험담으로 정리
  • Shiki의 CSS 변수 기반 테마 워크플로를 예시로 소개

Comment Studio (Visual Studio 확장)

  • Visual Studio에서 주석(Comments) 작성/관리 경험을 개선하는 확장
  • 코드 리뷰/협업 흐름에서 코멘트를 남기는 방식을 보조하는 도구

“이 async 메서드는 await가 없어서 동기적으로 실행됩니다”의 진짜 의미

  • async + await 미사용 경고의 의미와 왜 “동기 실행”이 될 수 있는지 설명
  • 예제로 await 없는 async 메서드가 사실상 Task 래핑이 되는 점을 정리

C# 반올림 완전정복: .NET에서 숫자를 반올림하는 궁극 가이드

  • Math.Round/Floor/Ceiling 등 반올림 API와 사용 포인트를 정리
  • MidpointRounding(ToEven/AwayFromZero 등) 차이를 예제로 설명

애플리케이션과 DB 사이의 타임존 불일치 문제 해결

  • 타임존 불일치의 흔한 원인(저장 방식, 서버/DB 설정, ORM 변환 등)을 정리
  • 저장/처리는 UTC, 표시(UI)에서만 로컬 변환 원칙을 강조

NDC London 2026 참관/봉사 후기

  • NDC London 2026 세션을 날짜별로 요약(접근성, 테스트, AI 등)
  • Playwright MCP, .NET 소스 제너레이터 등 인상 깊은 포인트를 메모로 정리

1997년처럼 Quake를 컴파일해보자!

  • 1990년대 환경 제약 속에서 Quake 빌드 과정을 재현하며 툴체인을 설명
  • 컴파일러/링커/호환성/플랫폼 차이 같은 빌드 이슈를 다룸

“LaunchyBar” Visual Studio 확장 소개

  • Visual Studio에서 명령/기능을 빠르게 실행하는 확장(LaunchyBar) 소개
  • 반복 작업을 단축하는 사용 시나리오를 간단히 제시

C# Random: .NET에서 신뢰할 수 있는 난수 생성 결정판 가이드

  • Random의 시드/재현성/스레드 안전성 같은 함정을 정리
  • RandomRandomNumberGenerator(보안 난수)의 구분을 강조

stong/gradscii-art: 머신러닝 기반 ASCII 아트 생성기

  • 머신러닝 기반 ASCII 아트 생성기 프로젝트(README/예시 중심)
  • 설치/실행 후 입력을 ASCII로 변환하는 기본 흐름을 제공
11개의 좋아요