Repository navigation
feat!: generate typed keys for every neutral resx, with or without a designer - #43
Merged
rent-a-developer merged 2 commits intoOct 16, 2026
Conversation
…designer The build wiring passes MSBuild's resource name (ManifestResourceName, LogicalName, WithCulture) to the generator through the analyzer config file, and each generated <Name>Keys class creates its own ResourceManager from it. Also: the pre-release gate removes cached ResXLocalization packages before the package consumers run, and the generator project no longer lists AnalyzerReleases.*.md twice. Refs #34 BREAKING CHANGE: generated <Name>Keys classes carry their own ResourceManager, created from the resource name MSBuild computes, and their keys no longer use the designer's ResourceManager. Files without a designer and dotted neutral files now produce keys classes; RXLGEN002 is removed. Two files that produce the same keys class report RXLGEN004 instead of merging. See docs/guides/migration-2.0.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
…mporary markup-compile pass A .resx without a designer takes its keys-class namespace from CustomToolNamespace when it is set. In WPF's temporary markup-compile pass the "_<random>_wpftmp" suffix is removed from our own copies of the resource names and of CustomToolNamespace (see build/ResXLocalization.Resx.targets). The pre-release gate also runs every package consumer on the .NET 8 SDK, and a new consumer covers a RootNamespace derived from the project name. Refs #34 Co-Authored-By: Claude Opus 5.5 <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.
Refs #34
Part of #29
The build wiring passes MSBuild's resource name (ManifestResourceName, LogicalName, WithCulture) to the generator through the analyzer config file, and each generated Keys class creates its own ResourceManager from it. Also: the pre-release gate removes cached ResXLocalization packages before the package consumers run, and the generator project no longer lists AnalyzerReleases.*.md twice.
BREAKING CHANGE: generated Keys classes carry their own ResourceManager, created from the resource name MSBuild computes, and their keys no longer use the designer's ResourceManager. Files without a designer and dotted neutral files now produce keys classes; RXLGEN002 is removed. Two files that produce the same keys class report RXLGEN004 instead of merging. See docs/guides/migration-2.0.md.
Checklist
Everything under Always applies to every pull request. The rest applies only when its trigger does —
tick it, or leave it and say why in the description. A box that does not apply is not a box to tick.
Always
pwsh -File scripts/pre-commit-gate.ps1passes. It runs the public-API reminder, checks line endings,style, formatting and member ordering, builds Release and runs the test suites. Use
-Fixto have itapply the tidying rather than only report it.
TreatWarningsAsErrorsis on, so this also covers style,member ordering, trim and public-API diagnostics.
<type>/issue-<number>-<slug>, or<type>/<slug>when there is no issue — seeCONTRIBUTING.md.
If the change adds behaviour or fixes a bug
CHANGELOG.mdhas an entry under## [Unreleased]. Do not bump a version — the version, therelease date and the tag are the maintainer's, at release time.
If the change touches one UI package
CONTRIBUTING.md. The Avalonia and WPF markup
extensions and converters are deliberate mirrors of each other.
If the change touches resource lookup, the generated keys, or the packaging that carries them
Culture fallback, satellite discovery, the source generator's output, the
buildTransitivewiring, or adependency version. Nothing is trimmed on the just-in-time compiler, so no other check in this repository
can see the damage a mistake here does to a trimmed application.
pwsh -File scripts/verify-package-aot.ps1 -Packpasses for both frameworks(
-Framework net8.0and thenet10.0default).IL2xxx/IL3xxxdiagnostics, and none suppressed.If the change touches the public API
PublicAPI.Unshipped.txtis updated withpwsh -File scripts/update-public-api.ps1, andthe diff was reviewed line by line. A
*REMOVED*entry is a breaking change.docs/are updated.