Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[XAML/AXAML] Experimentally generate XSD from C# workspace #56

Open
BinToss opened this issue Jul 11, 2023 · 0 comments
Open

[XAML/AXAML] Experimentally generate XSD from C# workspace #56

BinToss opened this issue Jul 11, 2023 · 0 comments

Comments

@BinToss
Copy link

BinToss commented Jul 11, 2023

This experiment is better suited for an XAML/AXAML-specific extension, but only one exists and it is specifically for NoesisGUI.

Why?

As it is, this extension's Avalonia schema is convenient, but comes with major drawbacks for both end-users and maintainers.

  • Schema symbols are manually defined. This limits symbols to only those which are feasible to maintain long-term and are part of Avalonia's API. This excludes third-party Avalonia controls and add-ons. This also means the included XSD may be incompatible depending on the version of Avalonia targeted by a csproj.
  • Schema symbols are manually updated. This also affects maintainability and project compatibility.

The current Avalonia completion source is outdated and partially incompatible with the latest major release of Avalonia: 11.0.0. This release included several breaking changes from the previous major release, 0.10.0. The AvaloniaUI organization provides a upgrade guide for API consumers.

How?

Generating XSD from C# workspace symbols will require either communicating with ms-dotnettools.csharp and/or ms-dotnettools.csdevkit or a first-party solution for analyzing the project's dependency tree for Avalonia assemblies and third-party Avalonia add-ons (those that depend on Avalonia).

Currently, I use Avant Garde's ability to export Avalonia's schema, but it's currently generated from the Avalonia version targeted by Avant Garde rather than the version targeted by the project project. This may be changed later.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant