Skip to content

Languages

This page is also available in 简体中文 and 日本語.

Architecture overview

Repositories

RepositoryPurpose
Prism.SourceGeneratorsSource generators, MvvmAIO.Prism.Core attributes, packaging, tests, CI.
Prism.SourceGenerators.DocsThis static documentation site (VitePress).
Prism.SourceGenerators.SamplesAvalonia sample apps (Prism 8 / 9).

Layout in Prism.SourceGenerators

Prism.SourceGenerators/           # Shared implementation (.shproj / .projitems)
Prism.SourceGenerators.Core/    # Attributes shipped as MvvmAIO.Prism.Core (referenced by apps + analyzers)
Prism.SourceGenerators.Roslyn*/ # Compiler-version-specific generator projects (NuGet compatibility)
Prism.Bcl.Commands/             # Optional Prism 8 AsyncDelegateCommand compatibility package

The shared project holds most generator logic. Roslyn* projects reference the Roslyn API version that matches each published package; the build selects the appropriate target so consumers get a generator compiled against their toolchain.

Major generators (conceptual)

AreaResponsibility
Observable / commands[ObservableProperty], [DelegateCommand], [AsyncDelegateCommand], related attributes.
ContainerRegistration attributes → PrismRegistrationExtensions.g.csIContainerRegistry calls.
BindableBase[BindableBase] INPC emission for types not inheriting Prism BindableBase.

Each pipeline uses Roslyn incremental generation (IIncrementalGenerator) with narrow attribute providers where possible so recompilation stays cheap.

Next

Released under the MIT License.

Released under the MIT License.