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.cs → IContainerRegistry 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.