<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net10.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
    <RootNamespace>ClawdDotNet.Desktop</RootNamespace>
    <AssemblyName>ClawdDotNet</AssemblyName>
    <ApplicationIcon>Assets\app.ico</ApplicationIcon>

    <!-- Avalonia legt AXAML-Dateien selbst als AvaloniaResource an; die Standard-Globs
         wuerden sie zusaetzlich als None einsammeln. -->
    <AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>

    <!-- Kein Konsolenfenster unter Windows, aber unter Linux ein normaler Prozess.
         WinExe verhaelt sich dort ohnehin wie Exe. -->
    <BuiltInComInteropSupport>false</BuiltInComInteropSupport>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Avalonia" Version="12.1.1" />
    <PackageReference Include="Avalonia.Desktop" Version="12.1.1" />
    <PackageReference Include="Avalonia.Themes.Fluent" Version="12.1.1" />
    <PackageReference Include="CommunityToolkit.Mvvm" Version="8.4.2" />
  </ItemGroup>

  <!-- Assets enthaelt die App-Symbole und Assets\Fonts die beiden mitgelieferten
       Schriften (Barlow, Barlow Condensed; SIL Open Font License, siehe OFL.txt).
       Sie werden ueber avares:// referenziert, siehe Styles/Theme.axaml. -->
  <ItemGroup>
    <AvaloniaResource Include="Assets\**" />
  </ItemGroup>

  <!-- Muss neben der Programmdatei liegen, damit sie im Paket neben der manifest.json
       landet: Von dort liest der update-agent sie bei 'install' und 'configure'. -->
  <ItemGroup>
    <Content Include="setup.json" CopyToOutputDirectory="PreserveNewest" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\ClawdDotNet.App\ClawdDotNet.App.csproj" />
  </ItemGroup>

  <!-- Native Debug-Symbole aus NuGet-Paketen nicht mitkopieren. libSkiaSharp.pdb ist
       allein 80 MB, libHarfBuzzSharp.pdb weitere 20 - sie blaehten die Publish-Ausgabe
       auf das Dreifache auf, obwohl sie im Paket ohnehin ausgeschlossen sind. Unsere
       eigenen Symbole sind eingebettet (siehe Directory.Build.props) und daher nicht
       betroffen. -->
  <Target Name="RemoveNativeSymbols" AfterTargets="ResolveReferences">
    <ItemGroup>
      <ReferenceCopyLocalPaths Remove="@(ReferenceCopyLocalPaths)"
                               Condition="'%(Extension)' == '.pdb'" />
    </ItemGroup>
  </Target>

  <!-- Dieselbe Bereinigung noch einmal fuer die Publish-Ausgabe: Die nativen Symbole
       kommen als Laufzeit-Bestandteile ueber ResolvedFileToPublish und werden von der
       Kopierliste oben gar nicht erfasst. Unbedenklich fuer unsere eigenen Assemblies -
       deren Symbole stecken eingebettet in der DLL. -->
  <Target Name="RemoveNativeSymbolsFromPublish" AfterTargets="ComputeResolvedFilesToPublishList">
    <ItemGroup>
      <ResolvedFileToPublish Remove="@(ResolvedFileToPublish)"
                             Condition="'%(Extension)' == '.pdb'" />
    </ItemGroup>
  </Target>

</Project>
