Summary
Extend compile-time diagnostics for multi-assembly partial registries after the plugin-assembly pattern is documented and tested. Improve failure modes when provider projects contribute conflicting or incomplete registrations.
Proposed diagnostics
| ID |
Severity |
Trigger |
| DP033 |
Error |
Duplicate strategy key across assemblies merging into the same partial *Registry |
| DP034 |
Info |
Provider assembly is referenced but its strategy key never appears in sample/config documentation (documentation hint; optional) |
DP032 (warning when RegistryConfiguration key literal is absent from App.config) is explicitly out of scope unless a follow-up proves compile-time config analysis is worthwhile.
Documentation
Acceptance criteria
Dependencies
- Plugin assembly documentation + cross-project tests (related issue)
RegistryConfiguration helpers (related issue) for end-to-end sample wiring in a follow-up PR
Non-goals
- App.config MSBuild analyzer (DP032)
- New
[RegisterStrategyBundle] attribute — defer unless companion-type boilerplate becomes excessive
Summary
Extend compile-time diagnostics for multi-assembly partial registries after the plugin-assembly pattern is documented and tested. Improve failure modes when provider projects contribute conflicting or incomplete registrations.
Proposed diagnostics
*RegistryDP032 (warning when
RegistryConfigurationkey literal is absent from App.config) is explicitly out of scope unless a follow-up proves compile-time config analysis is worthwhile.Documentation
docs/PluginAssemblies.md: related contracts share the same strategy key via separate[RegisterStrategy]attributes; host module callsRegisterAutofacon each registryAs<TContract>().As<TAdditional>()): manual module supplement in v1; assessAdditionalContractsgenerator parameter only if sample friction warrants itAcceptance criteria
DesignPatterns.DiagnosticsDependencies
RegistryConfigurationhelpers (related issue) for end-to-end sample wiring in a follow-up PRNon-goals
[RegisterStrategyBundle]attribute — defer unless companion-type boilerplate becomes excessive