<Project>
  <!-- Shared properties for every project under windows/ (docs/WINDOWS_PORT.md §10). -->
  <PropertyGroup>
    <TargetFramework>net9.0</TargetFramework>
    <LangVersion>latest</LangVersion>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
    <!-- The broker and app never need culture-specific formatting; invariant mode also lets
         the exact same binaries run in stripped CI containers without libicu. -->
    <InvariantGlobalization>true</InvariantGlobalization>
  </PropertyGroup>

  <!-- Build channel, mirroring Package.swift's NUCLEIC_CHANNEL scheme: a compile define
       (NUCLEIC_DEV/CANARY/BETA/RC/STABLE) the C# side can key identity/banner logic off.
       Defaults to dev, exactly like the Swift manifest. -->
  <PropertyGroup>
    <NucleicChannel Condition="'$(NucleicChannel)' == ''">$(NUCLEIC_CHANNEL)</NucleicChannel>
    <NucleicChannel Condition="'$(NucleicChannel)' == ''">dev</NucleicChannel>
  </PropertyGroup>
  <PropertyGroup>
    <DefineConstants Condition="'$(NucleicChannel)' == 'stable'">$(DefineConstants);NUCLEIC_STABLE</DefineConstants>
    <DefineConstants Condition="'$(NucleicChannel)' == 'rc'">$(DefineConstants);NUCLEIC_RC</DefineConstants>
    <DefineConstants Condition="'$(NucleicChannel)' == 'beta'">$(DefineConstants);NUCLEIC_BETA</DefineConstants>
    <DefineConstants Condition="'$(NucleicChannel)' == 'canary'">$(DefineConstants);NUCLEIC_CANARY</DefineConstants>
    <DefineConstants Condition="'$(NucleicChannel)' == 'dev'">$(DefineConstants);NUCLEIC_DEV</DefineConstants>
  </PropertyGroup>
</Project>
