📄 src/NotesApp.csproj
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net10.0-android</TargetFramework>
    <SupportedOSPlatformVersion>24</SupportedOSPlatformVersion>
    <OutputType>Exe</OutputType>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
    <ApplicationId>NotesApp</ApplicationId>
    <ApplicationVersion>1</ApplicationVersion>
    <ApplicationDisplayVersion>1.0</ApplicationDisplayVersion>
    <TrimMode>full</TrimMode>
    <!-- IL2104 fires because YamlDotNet's own IL has unannotated reflection patterns, but
         RootMode="all" below already keeps every member of that assembly - nothing it
         reflects over gets removed, so the warning has no runtime consequence here. -->
    <NoWarn>$(NoWarn);IL2104</NoWarn>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Markdig" />
    <PackageReference Include="Microsoft.Identity.Client" />
    <PackageReference Include="Microsoft.Graph" />
    <PackageReference Include="Microsoft.Graph.Core" />
    <PackageReference Include="Xamarin.AndroidX.Core" />
    <PackageReference Include="Xamarin.AndroidX.Browser" />
    <PackageReference Include="Xamarin.AndroidX.RecyclerView" />
    <PackageReference Include="Xamarin.Google.Android.Material" />
    <PackageReference Include="Xamarin.AndroidX.AppCompat" />
    <PackageReference Include="YamlDotNet" />
  </ItemGroup>
  <ItemGroup>
    <!-- YamlDotNet's Dictionary<string, object> (de)serialization relies on runtime reflection
         over arbitrary types (property/method discovery, scalar resolution) with no
         trim-safety annotations, so TrimMode=full can strip members it needs at runtime.
         Exempt just this assembly rather than risk a hard-to-reproduce runtime failure. -->
    <TrimmerRootAssembly Include="YamlDotNet" RootMode="all" />
  </ItemGroup>
</Project>