Repository navigation
build: retarget to .NET 10 and publish GUI/CLI as Native AOT - #1
Merged
Merged
Conversation
Align the toolset with the organization's other .NET tools (MetahookInstaller): - Pin the .NET 10 SDK via global.json; migrate the solution to .slnx. - Retarget all projects to net10.0 / net10.0-windows10.0.17763.0. - Enable Native AOT (PublishAot + full trimming) for the GUI and CLI, folding the AOT settings into the csproj so every publish gets them. - Upgrade Avalonia 11.3.8 -> 12.1.3 and ReactiveUI.Avalonia 11.3.0 -> 12.1.6 (add System.Reactive 7.0.0, which is no longer transitive). - Adapt to Avalonia 12: TextBox.Watermark -> PlaceholderText, and drop x:CompileBindings="False" on the map ContextMenu so its bindings compile (reflection bindings break under AOT). - Replace the two anonymous-type JsonSerializer calls with source-generated request types (LlmRequestJsonContext); the anonymous-type overloads are not AOT-compatible. JSON output is unchanged. - Drop the redundant System.Text.Encoding.CodePages reference (in-box on .NET 10) and the unused Avalonia.Diagnostics package (removed in Avalonia 12). - Update the build workflow and README for .NET 10 / Native AOT. Co-Authored-By: Claude Code <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Aligns BSPLocalizationTools with the organization's other .NET tools (MetahookInstaller, PR MetaHookSv/MetahookInstaller#7).
Changes
global.json; migrateBSPLocalizationTools.sln->BSPLocalizationTools.slnx.net10.0/net10.0-windows10.0.17763.0.PublishAot+ full trimming); the AOT settings live in the csproj so every publish gets them, profile or not.11.3.8->12.1.3,ReactiveUI.Avalonia11.3.0->12.1.6(plus explicitSystem.Reactive 7.0.0, no longer transitive).TextBox.Watermark->PlaceholderText; droppedx:CompileBindings="False"on the mapContextMenuso its bindings compile — reflection bindings do not work under Native AOT.JsonSerializer.Serialize(...)calls (not AOT-compatible) are replaced with source-generated request types (LlmRequestJsonContext). Serialized JSON is byte-for-byte equivalent.System.Text.Encoding.CodePagesreference (in-box on .NET 10) and the unusedAvalonia.Diagnosticspackage (removed in Avalonia 12).10.0.x/.slnx, publishes both executables as Native AOT, prunes PDBs and asserts the exact published file set; README gained a Build section.Verification (local, .NET SDK 10.0.401)
dotnet buildclean: 0 warnings, 0 errors.dotnet test: 85/85 pass (JSON contract assertions unchanged).BSPLocalizationToolsCLI.exe(~7.7 MB); parses a real BSP and builds the prompt payload before reaching the (unreachable) LLM endpoint.BSPLocalizationTools.exe+av_libglesv2.dll/libSkiaSharp.dll/libHarfBuzzSharp.dll+zh-CN/zh-TWsatellite resources. The published GUI launches and renders correctly, with localization active (non-English) under trimming.IL2104summary fromCsvHelper(reflection features we do not use); no warnings remain from this repository's own code.🤖 Generated with Claude Code