| title |
|---|
Configuration Migration |
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:
- Existing
AvaloniaSourceGen*MSBuild properties. XamlSourceGen*MSBuild properties.- Transform rule files via
AvaloniaSourceGenTransformRulesandXamlSourceGenTransformRules. - Existing source-item-group transform rule inputs.
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:
- Legacy rule files (
AvaloniaSourceGenTransformRules/XamlSourceGenTransformRulesand item-group sources). - Unified
transform.rawTransformDocuments. - Unified typed transform object (
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.
- Keep existing MSBuild properties first.
- Introduce
xaml-sourcegen.config.jsonfor values that should be source-controlled as a single config document. - Move specialized per-assembly behavior to code metadata keys only when needed.
- Add precedence override only when you intentionally need non-default layering.