Skip to content

Avalonia.Desktop is a patch behind Avalonia (12.1.4 vs 12.1.5), so the package ships mixed Avalonia assemblies; dependabot has no Avalonia group to keep them together #77

Open

Description

@matt-edmondson

What's wrong

Directory.Packages.props lines 6-8 currently pin:

<PackageVersion Include="Avalonia" Version="12.1.5" />
<PackageVersion Include="Avalonia.Desktop" Version="12.1.4" />
<PackageVersion Include="Avalonia.Native" Version="12.1.5" />

Restore therefore resolves two Avalonia versions side by side, for every TFM and RID:

  • Avalonia.Base, Avalonia.Native and Avalonia.Remote.Protocol come in at 12.1.5.
  • Avalonia.X11, Avalonia.Win32, Avalonia.Skia, Avalonia.FreeDesktop and Avalonia.HarfBuzz come in through Avalonia.Desktop at 12.1.4.

In the built demo, Avalonia.Base.dll is 12.1.5.0 and Avalonia.X11.dll is 12.1.4.0.

How it happened, and why it will keep happening

.github/dependabot.yml groups ktsu.*, Microsoft.*, System.* and Silk.NET.*, but has no group for Avalonia*, so the three packages arrive in separate PRs.

Why it matters

Consumers of the published package get a combination of Avalonia assemblies the Avalonia team never released together. Avalonia's platform backends (X11, Win32, Skia) use internal and private APIs of Avalonia.Base. A patch release that changes one of those APIs turns this into a runtime MissingMethodException/TypeLoadException in the tray path, on only some platforms.

The current skew does not break today: a tray run under xvfb worked. This is a hazard, not an observed crash.

Suggested fix / acceptance criteria

  • Bump Avalonia.Desktop to 12.1.5 so all three match.
  • Add a dependabot group, for example:
    avalonia:
      patterns:
        - "Avalonia*"
    so the packages always move in a single PR.
  • Optional: a build-time check that fails when the Avalonia* PackageVersion entries differ.

Activity

  1. matt-edmondson commented on Nov 3, 2026

    @matt-edmondson
    ContributorAuthor

    Triage

    • Category: Improvement (dependency hygiene)
    • Priority: Medium. The published package ships a mix of Avalonia assemblies the Avalonia team never released together. Nothing has failed yet, and the issue says so, but it has already happened twice and a future patch release could turn it into a runtime MissingMethodException.
    • Area / suggested assignee: Directory.Packages.props and .github/dependabot.yml. Owner: @matt-edmondson
    • Duplicates / in progress: Not a duplicate. Bump Avalonia, Avalonia.Desktop and Avalonia.Native #73 (closed, "no longer updatable") was the Dependabot PR that would have aligned the versions. No open PR covers it. Keep a gap after a long label in --status and align every value [patch] #76 is unrelated (--status formatting).
    • Next step: Bump Avalonia.Desktop to 12.1.5 and add an avalonia group with the pattern Avalonia* to the Dependabot config. Both changes are small and fit in one PR. A build-time version-equality check is optional.

    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    dependenciesPull requests that update a dependency fileenhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions