Files

49 lines
2.8 KiB
XML
Raw Permalink Normal View History

2026-07-27 22:02:34 -07:00
<Project Sdk="Microsoft.NET.Sdk">
<!-- nucleic-brokerd (docs/WINDOWS_PORT.md §2.3, §3.3): the C# child process of
nucleic-hostd that owns every Microsoft.WSL.Containers (wslc) call, exposed to Swift
as NDJSON JSON-RPC 2.0 over stdio.
The wslc WinRT surface is isolated behind IWslc, and the REAL facade is compiled only
when -p:UseWslc=true (a Windows machine with the preview NuGet reachable): the API is
public preview with breaking changes expected, and the M1 spike validates it. Every
other build — Linux CI, the fake-backed unit tests — compiles the portable core plus
an "unavailable" facade, so broker logic and RPC surface are testable everywhere. -->
<PropertyGroup>
<OutputType>Exe</OutputType>
<AssemblyName>nucleic-brokerd</AssemblyName>
<RootNamespace>NucleicBroker</RootNamespace>
</PropertyGroup>
<PropertyGroup Condition="'$(UseWslc)' == 'true'">
<!-- 26100, NOT the 19041 the package's lib folder advertises. Those disagree, and the
binary wins: `lib/net8.0-windows10.0.19041.0/wslcsdkcs.dll` is itself compiled against
Microsoft.Windows.SDK.NET 10.0.26100.79, so a 19041 targeting pack cannot load it —
`error CS1705: ... uses 'Microsoft.Windows.SDK.NET, Version=10.0.26100.79' which has a
higher version than referenced assembly ... 10.0.19041.38`. Matching the folder name
looks right and does not build. -->
<TargetFramework>net9.0-windows10.0.26100.0</TargetFramework>
<!-- The TFM alone selects a targeting pack by MAJOR revision only, and the .NET 9 SDK's
default for 26100 is 10.0.26100.38 — still below the .79 wslcsdkcs was built against,
so CS1705 survives the TFM bump. This pins the projection itself. .80 rather than the
.79 the error names because .79 was never published to nuget.org; the constraint is a
floor, so the next one up satisfies it. Raise it, never lower it, if a package bump
moves the floor again. -->
<WindowsSdkPackageVersion>10.0.26100.80</WindowsSdkPackageVersion>
2026-07-27 22:02:34 -07:00
<DefineConstants>$(DefineConstants);USE_WSLC</DefineConstants>
</PropertyGroup>
<ItemGroup Condition="'$(UseWslc)' != 'true'">
<Compile Remove="Wslc/**/*.cs" />
</ItemGroup>
<ItemGroup Condition="'$(UseWslc)' == 'true'">
<!-- Version-pinned (docs/WINDOWS_PORT.md §15): bump deliberately per release, never
float — the API is preview and breaking changes must be absorbed behind IWslc.
2.9.3 is the ONLY version on nuget.org and it tracks WSL's own version scheme, not
a `0.1.0-preview.N` one; the invented pin this replaced could never have restored. -->
<PackageReference Include="Microsoft.WSL.Containers" Version="[2.9.3]" />
2026-07-27 22:02:34 -07:00
</ItemGroup>
</Project>