This guide maps legacy configuration surface (AvaloniaSourceGen*, transform-rule properties/items) to the unified configuration model.
See the full schema in Configuration Model.
These remain supported:
AvaloniaSourceGen* MSBuild properties.XamlSourceGen* MSBuild properties.AvaloniaSourceGenTransformRules and XamlSourceGenTransformRules.The unified model layers on top of this compatibility surface.
| Legacy property | Unified key |
|---|---|
XamlSourceGenEnabled / AvaloniaSourceGenCompilerEnabled |
build.isEnabled |
XamlSourceGenBackend / AvaloniaXamlCompilerBackend |
build.backend |
AvaloniaSourceGenStrictMode |
build.strictMode |
AvaloniaSourceGenHotReloadEnabled |
build.hotReloadEnabled |
AvaloniaSourceGenHotReloadErrorResilienceEnabled |
build.hotReloadErrorResilienceEnabled |
AvaloniaSourceGenIdeHotReloadEnabled |
build.ideHotReloadEnabled |
AvaloniaSourceGenHotDesignEnabled |
build.hotDesignEnabled |
AvaloniaSourceGenIosHotReloadEnabled |
build.iosHotReloadEnabled |
AvaloniaSourceGenIosHotReloadUseInterpreter |
build.iosHotReloadUseInterpreter |
DotNetWatchBuild |
build.dotNetWatchBuild |
BuildingInsideVisualStudio |
build.buildingInsideVisualStudio |
BuildingByReSharper |
build.buildingByReSharper |
AvaloniaSourceGenAllowImplicitXmlnsDeclaration |
parser.allowImplicitXmlnsDeclaration |
AvaloniaSourceGenImplicitStandardXmlnsPrefixesEnabled |
parser.implicitStandardXmlnsPrefixesEnabled |
AvaloniaSourceGenImplicitDefaultXmlns |
parser.implicitDefaultXmlns |
AvaloniaSourceGenInferClassFromPath |
parser.inferClassFromPath |
AvaloniaSourceGenImplicitProjectNamespacesEnabled |
parser.implicitProjectNamespacesEnabled |
AvaloniaSourceGenGlobalXmlnsPrefixes |
parser.globalXmlnsPrefixes |
AvaloniaSourceGenUseCompiledBindingsByDefault |
binding.useCompiledBindingsByDefault |
AvaloniaSourceGenCSharpExpressionsEnabled |
binding.cSharpExpressionsEnabled |
AvaloniaSourceGenImplicitCSharpExpressionsEnabled |
binding.implicitCSharpExpressionsEnabled |
AvaloniaSourceGenMarkupParserLegacyInvalidNamedArgumentFallbackEnabled |
binding.markupParserLegacyInvalidNamedArgumentFallbackEnabled |
AvaloniaSourceGenTypeResolutionCompatibilityFallbackEnabled |
binding.typeResolutionCompatibilityFallbackEnabled |
AvaloniaSourceGenCreateSourceInfo |
emitter.createSourceInfo |
AvaloniaSourceGenTracePasses |
emitter.tracePasses |
AvaloniaSourceGenMetricsEnabled |
emitter.metricsEnabled |
AvaloniaSourceGenMetricsDetailed |
emitter.metricsDetailed |
Legacy rule files still work:
<PropertyGroup>
<AvaloniaSourceGenTransformRules>transform-rules.json</AvaloniaSourceGenTransformRules>
</PropertyGroup>
Unified configuration representation:
{
"schemaVersion": 1,
"transform": {
"rawTransformDocuments": {
"inline-rules.json": "{ \"typeAliases\": [ ... ], \"propertyAliases\": [ ... ] }"
}
}
}
Merge order for transform rules:
AvaloniaSourceGenTransformRules / XamlSourceGenTransformRules and item-group sources).transform.rawTransformDocuments.transform.configuration, when provided internally).When the same alias key exists in multiple layers, the later layer wins.
<PropertyGroup>
<AvaloniaXamlCompilerBackend>SourceGen</AvaloniaXamlCompilerBackend>
<AvaloniaSourceGenCompilerEnabled>true</AvaloniaSourceGenCompilerEnabled>
<AvaloniaSourceGenUseCompiledBindingsByDefault>true</AvaloniaSourceGenUseCompiledBindingsByDefault>
</PropertyGroup>
Create <ProjectDir>/xaml-sourcegen.config.json:
{
"schemaVersion": 1,
"build": {
"isEnabled": true,
"backend": "SourceGen"
},
"binding": {
"useCompiledBindingsByDefault": true
}
}
using System.Reflection;
[assembly: AssemblyMetadata("XamlSourceGen.Build.Backend", "SourceGen")]
[assembly: AssemblyMetadata("XamlSourceGen.Build.IsEnabled", "true")]
[assembly: AssemblyMetadata("XamlSourceGen.Binding.UseCompiledBindingsByDefault", "true")]
<PropertyGroup>
<XamlSourceGenConfigurationPrecedence>ProjectDefaultFile=80;MsBuild=200;Code=300;File=400</XamlSourceGenConfigurationPrecedence>
</PropertyGroup>
This example gives explicit config files highest precedence, so file values can override code values.
xaml-sourcegen.config.json for values that should be source-controlled as a single config document.