1.7 KiB
1.7 KiB
| paths | ||
|---|---|---|
|
MAUI 모바일 영역 규칙
로직은 Mobile.Core 로
VideoDownloader.Mobile 은 net10.0-android(macOS 에서는 +net10.0-ios)이라
VideoDownloader.Tests(net8.0-windows)가 참조할 수 없다. 테스트 가능한 로직은
VideoDownloader.Mobile.Core(net8.0)에 둔다. UI 프로젝트에는 화면 결선만 남긴다.
새 기능을 UI 프로젝트에 통째로 넣으면 검증할 방법이 사라진다.
링커 함정
Release/링커 트리밍에서 참조가 정적으로 안 보이는 타입은 통째로 잘려나가고,
런타임 FileNotFoundException 으로만 드러난다. 빌드는 통과한다.
실제 사례: 모달 NavigationPage 가 크래시 → Xamarin.AndroidX.LocalBroadcastManager 를
csproj 에 명시 참조해 해결. 리플렉션·XAML 로만 참조되는 타입을 쓸 때 이 함정을 의심한다.
플랫폼 분기
TFM 조건은 $([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'
형식으로 쓴다(csproj 기존 패턴). Windows 개발머신에는 iOS 워크로드가 없으므로
iOS TFM 은 macOS 조건부로만 켠다 — 이 조건을 무조건부로 바꾸면 Windows 빌드가 깨진다.
빌드 · 검증
dotnet build VideoDownloader.Mobile -f net10.0-android
- MAUI 워크로드가 없으면 실패한다. 없는 환경이면
Mobile.Core만 고치고 UI 결선은 워크로드가 있는 환경에서 확인하도록 사용자에게 알린다. - 화면 동작을 바꿨으면 에뮬레이터에 배포해 확인한 내용을 보고에 적는다. 단위 테스트만으로 "됐다"고 하지 않는다.