<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <Nullable>enable</Nullable>
        <ImplicitUsings>true</ImplicitUsings>
        <SatelliteResourceLanguages>en</SatelliteResourceLanguages>
        <Version>5.1.7</Version>

        <!-- Output/build -->
        <RunWorkingDirectory>$(MSBuildProjectDirectory)</RunWorkingDirectory>
        <OutputType>exe</OutputType>
        <ApplicationIcon>nadeko_icon.ico</ApplicationIcon>

        <!-- Analysis/Warnings -->
        <!--    <AnalysisMode>Recommended</AnalysisMode>-->
        <!--    <AnalysisModeGlobalization>None</AnalysisModeGlobalization>-->
        <NoWarn>CS1066;CS8981</NoWarn>

        <!-- Profile-guided optimization -->
        <TieredPGO>true</TieredPGO>
        <DebugType>embedded</DebugType>

    </PropertyGroup>

    <ItemGroup>
        <PackageReference Include="AngleSharp" Version="1.1.2">
            <PrivateAssets>all</PrivateAssets>
            <Publish>True</Publish>
        </PackageReference>
        <PackageReference Include="CodeHollow.FeedReader" Version="1.2.6"/>
        <PackageReference Include="CommandLineParser" Version="2.9.1"/>
        <PackageReference Include="Discord.Net" Version="3.15.3"/>
        <PackageReference Include="CoreCLR-NCalc" Version="3.1.246"/>
        <PackageReference Include="Google.Apis.Urlshortener.v1" Version="1.41.1.138"/>
        <PackageReference Include="Google.Apis.YouTube.v3" Version="1.68.0.3414"/>
        <PackageReference Include="Google.Apis.Customsearch.v1" Version="1.49.0.2084"/>
        <!--        <PackageReference Include="Grpc.AspNetCore" Version="2.62.0" />-->
        <PackageReference Include="Google.Protobuf" Version="3.26.1"/>
        <PackageReference Include="Grpc.Net.ClientFactory" Version="2.62.0"/>
        <PackageReference Include="Grpc.Tools" Version="2.63.0">
            <PrivateAssets>all</PrivateAssets>
            <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
        </PackageReference>
        <PackageReference Include="Microsoft.CodeAnalysis.CSharp.Scripting" Version="4.5.0"/>

        <PackageReference Include="Microsoft.Extensions.Configuration" Version="8.0.0"/>
        <PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="8.0.0"/>
        <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0"/>

        <PackageReference Include="MorseCode.ITask" Version="2.0.3"/>
        <PackageReference Include="NetEscapades.Configuration.Yaml" Version="3.1.0"/>

        <!-- DI -->
        <!--        <PackageReference Include="Ninject" Version="3.3.6"/>-->
        <!--        <PackageReference Include="Ninject.Extensions.Conventions" Version="3.3.0"/>-->
        <!--        <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" />-->
        <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.1"/>
        <PackageReference Include="DryIoc.dll" Version="5.4.3"/>
        <!--        <PackageReference Include="Scrutor" Version="4.2.0" />-->

        <PackageReference Include="Microsoft.Extensions.Http" Version="8.0.0"/>
        <PackageReference Include="Microsoft.Extensions.Logging.Console" Version="8.0.0"/>
        <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="8.0.0"/>
        <PackageReference Include="Microsoft.SyndicationFeed.ReaderWriter" Version="1.0.2"/>
        <PackageReference Include="Newtonsoft.Json" Version="13.0.3"/>
        <PackageReference Include="NonBlocking" Version="2.1.2"/>
        <PackageReference Include="OneOf" Version="3.0.263"/>
        <PackageReference Include="OneOf.SourceGenerator" Version="3.0.263"/>
        <PackageReference Include="Serilog.Sinks.Console" Version="5.0.1"/>
        <PackageReference Include="Serilog.Sinks.Seq" Version="7.0.1"/>

        <PackageReference Include="SixLabors.Fonts" Version="1.0.0-beta17"/>
        <PackageReference Include="SixLabors.ImageSharp" Version="2.1.9"/>
        <PackageReference Include="SixLabors.ImageSharp.Drawing" Version="1.0.0-beta14"/>
        <PackageReference Include="SixLabors.Shapes" Version="1.0.0-beta0009"/>
        <PackageReference Include="StackExchange.Redis" Version="2.8.0" />
        <PackageReference Include="YamlDotNet" Version="15.1.4"/>
        <PackageReference Include="SharpToken" Version="2.0.3" />

        <PackageReference Include="JetBrains.Annotations" Version="2023.3.0"/>


        <!-- Db-related packages -->
        <PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.4"/>
        <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.4">
            <PrivateAssets>all</PrivateAssets>
            <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
        </PackageReference>

        <PackageReference Include="linq2db.EntityFrameworkCore" Version="8.1.0"/>

        <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="8.0.4"/>
        <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="8.0.4"/>
        <PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="8.0.2"/>

        <PackageReference Include="EFCore.NamingConventions" Version="8.0.3"/>

        <!-- Used by stream notifications -->
        <PackageReference Include="TwitchLib.Api" Version="3.4.1"/>

        <!-- sqlselectcsv and stock -->
        <PackageReference Include="CsvHelper" Version="32.0.3"/>

    </ItemGroup>

    <ItemGroup>
        <ProjectReference Include="..\Nadeko.Medusa\Nadeko.Medusa.csproj"/>
        <ProjectReference Include="..\NadekoBot.Voice\NadekoBot.Voice.csproj"/>
        <ProjectReference Include="..\NadekoBot.Generators\NadekoBot.Generators.csproj" OutputItemType="Analyzer"/>
    </ItemGroup>


    <ItemGroup>
        <AdditionalFiles Include="data\strings\responses\responses.en-US.json"/>
    </ItemGroup>

    <ItemGroup>
        <Protobuf Include="..\NadekoBot.Coordinator\Protos\coordinator.proto" GrpcServices="Client">
            <Link>Protos\coordinator.proto</Link>
        </Protobuf>
        <None Update="data\**\*">
            <ExcludeFromSingleFile>true</ExcludeFromSingleFile>
            <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
        </None>
        <None Update="creds.yml">
            <ExcludeFromSingleFile>true</ExcludeFromSingleFile>
            <CopyToOutputDirectory>Always</CopyToOutputDirectory>
        </None>
        <None Update="creds_example.yml">
            <ExcludeFromSingleFile>true</ExcludeFromSingleFile>
            <CopyToOutputDirectory>Always</CopyToOutputDirectory>
        </None>
    </ItemGroup>

    <PropertyGroup Condition=" '$(Configuration)' == 'GlobalNadeko' ">
        <!-- Define trace doesn't seem to affect the build at all so I had to remove $(DefineConstants)-->
        <DefineTrace>false</DefineTrace>
        <DefineConstants>GLOBAL_NADEKO</DefineConstants>
        <NoWarn>$(NoWarn);CS1573;CS1591</NoWarn>
        <Optimize>true</Optimize>
        <DebugType>portable</DebugType>
        <DebugSymbols>false</DebugSymbols>
    </PropertyGroup>
</Project>
