Files
SVSimServer/SVSim.BattleNode/SVSim.BattleNode.csproj
2026-06-06 16:19:21 -04:00

31 lines
1.6 KiB
XML

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="MessagePack" Version="2.5.172" />
</ItemGroup>
<ItemGroup>
<!-- Aliased: the copied decompiled engine puts a huge type surface in the GLOBAL namespace
(BattlePlayer, MessagePackSerializer, ...) which would otherwise leak into and collide
with every node file. The extern alias confines it; only Sessions/Engine/* opts in.
PrivateAssets=compile: the engine is an implementation detail of the node — hide its TYPES
from the COMPILE closure of consumers (SVSim.EmulatedEntrypoint references BattleNode and
would otherwise re-hit the MessagePackSerializer global-namespace collision), while still
flowing the RUNTIME asset so SVSim.BattleEngine.dll deploys into consumers' output. -->
<ProjectReference Include="..\SVSim.BattleEngine\SVSim.BattleEngine.csproj" Aliases="engine" PrivateAssets="compile" />
</ItemGroup>
<ItemGroup>
<InternalsVisibleTo Include="SVSim.UnitTests" />
<InternalsVisibleTo Include="SVSim.BattleEngine.Tests" />
</ItemGroup>
<ItemGroup>
<!-- EngineGlobalInit reads the loader's card-master dump from AppContext.BaseDirectory/Data/cards.json
to populate the engine's static CardMaster. Ship it in the node's output. -->
<None Include="..\SVSim.Bootstrap\Data\cards.json" Link="Data\cards.json" CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>
</Project>