Files
Anvil/Anvil/Anvil.csproj
T
JonKazama-Hellion eb5753eea6 feat(recipedata): add catalog + load result, wire csharpier
Two concerns bundled into one commit because the csharpier tool restore
reformatted four earlier files as soon as the manifest landed:

- .config/dotnet-tools.json: csharpier 1.2.6 as local tool, follows
  the standard .config layout (dotnet tool restore will find it).
- Anvil/packages.lock.json: produced by dotnet restore, pinned alongside
  the csproj's RestorePackagesWithLockFile=true.
- Anvil/RecipeData/RecipeDataLoadResult.cs: public record carrying the
  adapter's load-pass summary (counts + duration + warnings). Surfaced
  to the SelfTest step and future UI status surfaces.
- Anvil/RecipeData/RecipeDataCatalog.cs: public DI singleton with all
  seven dictionary lookups, the two helper methods (ActionsForClassJob,
  TryResolveActionRowId), and the four meta properties from spec §2.7.
  Backed by a private CatalogState record that the adapter swaps in via
  a volatile reference - readers either see the empty initial state or
  the fully populated post-load snapshot, never a partial mid-build.
  TryResolveActionRowId carries the Cosmic-sentinel logic so hook code
  does not need to know about the CosmicOnly flag itself.
- Reformatting in AnvilAction.cs, ActionMechanicsTable.cs,
  ConditionMechanicsTable.cs, and Anvil.csproj: csharpier-mandated
  line-wrap / blank-line tweaks. No semantic changes.
2026-05-27 20:54:14 +02:00

64 lines
2.8 KiB
XML

<Project Sdk="Dalamud.NET.Sdk/15.0.0">
<PropertyGroup>
<Version>0.1.0</Version>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<LangVersion>latest</LangVersion>
<!-- Forge-wide Platform pin: solution-build defaults respect this; the
Forgeimizer v0.1.0 cycle showed that omitting it lets CI silently
fall back to AnyCPU and writes outputs into the wrong subtree. -->
<Platforms>x64</Platforms>
<PlatformTarget>x64</PlatformTarget>
<!-- Lock package versions so a casual restore does not surprise-bump
transitive dependencies between cycles. -->
<RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>
<AssemblyName>Anvil</AssemblyName>
<RootNamespace>Anvil</RootNamespace>
</PropertyGroup>
<ItemGroup>
<!-- Generic Host DI container, mirroring the HellionChat v1.5.0 pattern
(Lightless-Sync stack pin at 10.0.7). Closed ranges keep major
bumps from sneaking in through lock-file regeneration. -->
<PackageReference
Include="Microsoft.Extensions.DependencyInjection"
Version="[10.0.7, 11.0.0)"
/>
<PackageReference Include="Microsoft.Extensions.Hosting" Version="[10.0.7, 11.0.0)" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="[10.0.7, 11.0.0)" />
<PackageReference Include="Microsoft.Extensions.Options" Version="[10.0.7, 11.0.0)" />
</ItemGroup>
<ItemGroup>
<!-- Build-suite (Anvil.Tests in the local Hellion Build test repo)
needs InternalsVisibleTo to reach the LuminaRecipeAdapter and
mechanic-table classes without making them public. -->
<InternalsVisibleTo Include="Anvil.Tests" />
</ItemGroup>
<ItemGroup>
<Compile Update="Localization\AnvilStrings.Designer.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>AnvilStrings.resx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="Localization\AnvilStrings.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>AnvilStrings.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
<!-- Plugin icon + screenshots: SDK 15 default packager picks these up via
images/* and the icon_url / image_urls fields in Anvil.yaml. Do NOT
add a DalamudPackager.targets override - the SDK 15 default handles
icon + images correctly (lesson from HellionChat v0.5.2 burn). -->
<ItemGroup>
<None Include="images\**">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>