<Project>
    <!-- Target framework & language version -->
    <PropertyGroup>
        <TargetFramework>net9.0</TargetFramework>
        <LangVersion>latest</LangVersion>
    </PropertyGroup>

    <!-- Common build options -->
    <PropertyGroup>
        <Nullable>enable</Nullable>
        <ImplicitUsings>enable</ImplicitUsings>
        <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
        <InvariantGlobalization>true</InvariantGlobalization>
        <SatelliteResourceLanguages>none</SatelliteResourceLanguages>
    </PropertyGroup>

    <!-- Except low and medium severity vulnerable dependency warnings from TreatWarningsAsErrors, leaving high and critical severity ones intact -->
    <PropertyGroup>
        <WarningsNotAsErrors>$(WarningsNotAsErrors),NU1901,NU1902</WarningsNotAsErrors>
    </PropertyGroup>

    <!-- When DependencyVulnsAsError is not set, also suppress the remaining dependency vulnerability warnings -->
    <PropertyGroup Condition="'$(DependencyVulnsAsError)' != 'true'">
        <WarningsNotAsErrors>$(WarningsNotAsErrors),NU1903,NU1904</WarningsNotAsErrors>
    </PropertyGroup>

    <!-- Version metadata -->
    <PropertyGroup>
        <VersionPrefix>2025.1</VersionPrefix>
        <VersionSuffix>beta5.patch2.security1</VersionSuffix>
    </PropertyGroup>

    <ItemGroup>
        <AssemblyMetadata Include="codename" Value="phenidate" />
        <AssemblyMetadata Include="edition" Value="enterprise" />
    </ItemGroup>

    <!-- Embed debug info instead of generating PDBs in release configuration -->
    <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
        <DebugType>embedded</DebugType>
    </PropertyGroup>

    <!-- Don't copy blazor debug files to output directory in release configuration -->
    <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
        <BlazorWebAssemblyOmitDebugProxyOutput>true</BlazorWebAssemblyOmitDebugProxyOutput>
        <PreserveCompilationContext>false</PreserveCompilationContext>
    </PropertyGroup>

    <!-- Enable Blazor AOT compilation when EnableAOT build flag is set -->
    <PropertyGroup Condition="'$(EnableAOT)' == 'true'">
        <RunAOTCompilation>true</RunAOTCompilation>
        <EmccCompileOptimizationFlag>-O3</EmccCompileOptimizationFlag>
        <EmccLinkOptimizationFlag>-O3</EmccLinkOptimizationFlag>
        <WasmBitcodeCompileOptimizationFlag>-O3</WasmBitcodeCompileOptimizationFlag>
    </PropertyGroup>
</Project>
