<Project>
  <PropertyGroup>
    <TargetFramework>net10.0</TargetFramework>
    <LangVersion>latest</LangVersion>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
    <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
    <EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
    <AnalysisLevel>latest</AnalysisLevel>
    <GenerateDocumentationFile>false</GenerateDocumentationFile>
    <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
    <!--
      CA1859 (сменить интерфейс коллекции на конкретный тип ради девиртуализации) — осознанно
      выключено: помечаются им границы API (доменные модели планировщика, порты, хелперы тестов),
      и «ускорение» там означает изменяемую коллекцию, протекающую через границу. Пути не горячие
      (генерация расписания идёт раз в тик, а не в цикле по кадрам). Понадобится — включать точечно
      по месту, а не глобально.

      ASP0018 (параметр маршрута не используется хендлером) — тоже осознанно: часть шаблонов
      объявляет сегменты ради формы URL, а не ради хендлера. Так, превью заставки адресуется
      подблоком, но канал и блок остаются в пути, потому что по ним строит ссылки плейлист;
      у /{slug}/watch токен подтверждает зрителя, а не подписку на канал.
    -->
    <NoWarn>$(NoWarn);CA1711;CA1716;CA1848;CA1873;CA1859;ASP0018</NoWarn>
  </PropertyGroup>
</Project>
