Primary APIs and build knobs:
EnableAvaloniaXamlCompilationAvaloniaUseCompiledBindingsByDefaultAvaloniaXamlCreateSourceInfoAvaloniaXamlVerboseExceptionsAvaloniaXamlIlVerifyIlCompileAvaloniaXamlTaskXamlCompilerTaskExecutorAvaloniaXamlIlCompilerReference source files:
packages/Avalonia/AvaloniaBuildTasks.propspackages/Avalonia/AvaloniaBuildTasks.targetssrc/Avalonia.Build.Tasks/CompileAvaloniaXamlTask.cssrc/Avalonia.Build.Tasks/XamlCompilerTaskExecutor.cssrc/Avalonia.Build.Tasks/XamlCompilerTaskExecutor.Helpers.cssrc/Avalonia.Build.Tasks/GenerateAvaloniaResourcesTask.cssrc/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/AvaloniaXamlIlCompiler.cssrc/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/AvaloniaXamlDiagnosticCodes.cssrc/tools/Avalonia.Generators/Avalonia.Generators.propssrc/tools/Avalonia.Generators/NameGenerator/AvaloniaNameIncrementalGenerator.csAvalonia package targets define two core item groups:
AvaloniaXaml (*.axaml, *.paml by default)AvaloniaResourceKey behavior:
AvaloniaXaml items are included as resources and compiled.GenerateAvaloniaResourcesTask packs resources into embedded !AvaloniaResources.ClassToResourcePathIndex map is generated from x:Class declarations.High-level order:
AddAvaloniaResources sets up embedded resource placeholder.GenerateAvaloniaResources packs AvaloniaResource + AvaloniaXaml.AvaloniaPrepareCoreCompile adds XAML/resources as compile inputs.CompileAvaloniaXaml runs before final output, unless design-time build or explicitly disabled.CompileAvaloniaXaml invokes CompileAvaloniaXamlTask, which calls XamlCompilerTaskExecutor.Compile(...).
The compiler parses each XAML resource and emits:
__AvaloniaXamlIlPopulate or resource-specific populate methods),__AvaloniaXamlIlBuild / Build:<resource>),CompiledAvaloniaXaml.!XamlLoader with TryLoad(...) overloads.It also rewrites compiled code-behind calls:
AvaloniaXamlLoader.Load(this)AvaloniaXamlLoader.Load(sp, this)to generated trampoline methods that call compiled populate/build paths.
If no AvaloniaXamlLoader.Load(this) call exists and constructors are custom, compilation fails.
x:Precompiletrue/false only.false skips compile for that file.x:Classx:ClassModifierPublic, NotPublic (or Internal).x:Class is used.x:CompileBindings<Binding> becomes CompiledBinding or ReflectionBinding in scope.The compiler builds CompiledAvaloniaXaml.!XamlLoader.TryLoad(...) lookup by URI.
Loader reachability rules:
x:Class type has an accessible public constructor path.If a resource cannot be instantiated by runtime dispatcher, warning AVLN3001 is produced.
AvaloniaXamlDiagnosticCodes maps parser/transform/emission issues (AVLN1xxx, AVLN2xxx, AVLN3xxx).
Useful build knobs:
AvaloniaXamlVerboseExceptions=true for richer exceptions,AvaloniaXamlCreateSourceInfo=true to embed source location metadata,AvaloniaXamlIlVerifyIl=true for extra IL validation.AvaloniaXamlCreateSourceInfo defaults to true in Debug and false in non-Debug configurations.
Avalonia.Generators.props injects @(AvaloniaXaml) into Roslyn AdditionalFiles.
Generator options:
AvaloniaNameGeneratorIsEnabledAvaloniaNameGeneratorBehaviorAvaloniaNameGeneratorDefaultFieldModifierAvaloniaNameGeneratorFilterByPathAvaloniaNameGeneratorFilterByNamespaceAvaloniaNameGeneratorViewFileNamingStrategyAvaloniaNameGeneratorAttachDevToolsWith InitializeComponent behavior, generated code calls AvaloniaXamlLoader.Load(this) and binds named controls.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<EnableAvaloniaXamlCompilation>true</EnableAvaloniaXamlCompilation>
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
<AvaloniaXamlCreateSourceInfo>true</AvaloniaXamlCreateSourceInfo>
<AvaloniaXamlVerboseExceptions>true</AvaloniaXamlVerboseExceptions>
</PropertyGroup>
</Project>
Use x:CompileBindings and x:DataType intentionally in files where binding mode must differ.
AvaloniaXaml/AvaloniaResource, or compilation disabled.x:Class error
x:Class; fix file inclusion/duplicate resources.AVLN3001).AvaloniaUseCompiledBindingsByDefault and x:CompileBindings scope.AvaloniaXamlCreateSourceInfo and AvaloniaXamlVerboseExceptions when investigating.