XamlVisualEditor.FileExplorerExtension
0.2.0
dotnet add package XamlVisualEditor.FileExplorerExtension --version 0.2.0
NuGet\Install-Package XamlVisualEditor.FileExplorerExtension -Version 0.2.0
<PackageReference Include="XamlVisualEditor.FileExplorerExtension" Version="0.2.0" />
<PackageVersion Include="XamlVisualEditor.FileExplorerExtension" Version="0.2.0" />
<PackageReference Include="XamlVisualEditor.FileExplorerExtension" />
paket add XamlVisualEditor.FileExplorerExtension --version 0.2.0
#r "nuget: XamlVisualEditor.FileExplorerExtension, 0.2.0"
#:package XamlVisualEditor.FileExplorerExtension@0.2.0
#addin nuget:?package=XamlVisualEditor.FileExplorerExtension&version=0.2.0
#tool nuget:?package=XamlVisualEditor.FileExplorerExtension&version=0.2.0
XamlVisualEditor
XamlVisualEditor is an extensible, cross-platform visual IDE for Avalonia XAML. It combines a live designer, AvaloniaEdit code editor, language services, debugging, terminal and Git tooling, collaboration services, and a native .NET extension model in one Dock-based workspace.
Download · Documentation · Extension API · Changelog · Issues · Security
Highlights
- Live XAML parsing, AST synchronization, minimal-edit serialization, preview, selection, resizing, drag-and-drop, rulers, grids, and layout adorners.
- AvaloniaEdit code surfaces with TextMate highlighting, completion, semantic tokens, diagnostics, navigation, and execution-line rendering.
- C# and XAML language services plus an LSP router for external language servers.
- DAP and .NET SDK debugging with breakpoints, call stack, locals, watches, and configurable debugger tooling.
- Extensible commands, menus, toolbar actions, panels, views, property editors, language servers, settings, storage, dialogs, and permissions.
- Solution and file explorers, toolbox, property editor, output/problems, references, tree inspectors, animation editor, terminal, Git, ACP, MCP, collaboration, and IDE-bridge panels.
- Strict MVVM and ReactiveUI architecture with compiled Avalonia bindings, Xaml.Behaviors input routing, dependency injection, and source-generated reactive properties.
- Unit, integration, and Avalonia Headless UI suites run on Linux, Windows, and macOS in CI, with a dedicated Linux performance-test job.
Download and run
Download the archive for your operating system and CPU from the latest release.
| Platform | x64 | Arm64 |
|---|---|---|
| Linux | XamlVisualEditor-<version>-linux-x64.zip |
XamlVisualEditor-<version>-linux-arm64.zip |
| Windows | XamlVisualEditor-<version>-win-x64.zip |
XamlVisualEditor-<version>-win-arm64.zip |
| macOS | XamlVisualEditor-<version>-macos-x64.zip |
XamlVisualEditor-<version>-macos-arm64.zip |
Release archives are framework-dependent and require the .NET 10
runtime. Building or loading
.NET workspaces also requires a compatible .NET SDK. Extract the archive and run
XamlVisualEditor.App on Linux/macOS or XamlVisualEditor.App.exe on Windows.
The current release archives are not code-signed or notarized, so the operating
system may show a first-run security prompt. Release assets include
SHA256SUMS; verify the archive before running it when your environment requires
an integrity check. Each archive also contains the project README, changelog,
and MIT license.
Build from source
Prerequisites:
- Git
- .NET 10 SDK;
global.jsonaccepts the latest installed .NET 10 feature band - The repository submodules
git clone --recurse-submodules https://github.com/wieslawsoltes/XamlVisualEditor.git
cd XamlVisualEditor
dotnet restore XamlVisualEditor.slnx
dotnet build XamlVisualEditor.slnx -c Release --no-restore
dotnet run --project src/XamlVisualEditor.App/XamlVisualEditor.App.csproj -c Release
If the repository was cloned without submodules, initialize them with:
git submodule update --init --recursive
Test
dotnet test tests/XamlVisualEditor.Tests.Unit/XamlVisualEditor.Tests.Unit.csproj -c Release
dotnet test tests/XamlVisualEditor.Tests.Integration/XamlVisualEditor.Tests.Integration.csproj -c Release
dotnet test tests/XamlVisualEditor.Tests.UI/XamlVisualEditor.Tests.UI.csproj -c Release
dotnet test tests/XamlVisualEditor.Tests.Performance/XamlVisualEditor.Tests.Performance.csproj -c Release
NuGet packages
The release publishes reusable libraries and built-in extensions to
NuGet.org. Packages include MIT
license metadata, the repository README and icon, Source Link, deterministic
build metadata, and .snupkg symbols. Install a package with:
dotnet add package XamlVisualEditor.Core
Core, shell, and services
| Package | Version | Purpose |
|---|---|---|
| XamlVisualEditor.Core | Shared primitives, interfaces, enums, and contracts. | |
| XamlVisualEditor.Extensions | Extension SDK, manifests, hosting, permissions, and contribution registries. | |
| XamlVisualEditor.Shell | Dock factory and IDE-style layout. | |
| XamlVisualEditor.Shell.ViewModels | Documents, panels, commands, and shell orchestration. | |
| XamlVisualEditor.Workspace | MSBuild workspace loading, assembly resolution, and metadata. | |
| XamlVisualEditor.Terminal | Terminal emulator, PTY integration, and sessions. | |
| XamlVisualEditor.Terminal.Avalonia | Avalonia terminal control integration. | |
| XamlVisualEditor.Collaboration | CRDT-backed collaborative AST operations. | |
| XamlVisualEditor.Collaboration.UI | Collaboration presence and session ViewModels. | |
| XamlVisualEditor.Acp | Agent Client Protocol client and stdio transport. | |
| XamlVisualEditor.Animation | Animation domain models and AST resource writer. | |
| XamlVisualEditor.Sync | Text, AST, designer, and collaboration synchronization. |
Designer and editing
| Package | Version | Purpose |
|---|---|---|
| XamlVisualEditor.CodeEditor | AvaloniaEdit integration and editor rendering. | |
| XamlVisualEditor.Designer.Core | Design surfaces, items, selection, and hit testing. | |
| XamlVisualEditor.Designer.Rendering | Live Avalonia control creation and visual-to-AST mapping. | |
| XamlVisualEditor.Designer.DragDrop | Toolbox, surface, and tree drag-and-drop protocols. | |
| XamlVisualEditor.Designer.Adorners | Selection, resize, snap-line, and spacing adorners. | |
| XamlVisualEditor.PropertyEditor | DataGrid-based property grid and inline editors. | |
| XamlVisualEditor.TreeView | Visual and logical tree ViewModels. |
Language and XAML
| Package | Version | Purpose |
|---|---|---|
| XamlVisualEditor.CSharp.Language | Roslyn C# completion, diagnostics, and navigation. | |
| XamlVisualEditor.Language | Shared language-service registry and helpers. | |
| XamlVisualEditor.Lsp | LSP client transport, routing, and diagnostics. | |
| XamlVisualEditor.Xaml.Ast | Mutable, observable XAML AST. | |
| XamlVisualEditor.Xaml.Parsing | XamlX-backed parsing and diagnostics. | |
| XamlVisualEditor.Xaml.Serialization | Whitespace-preserving minimal-edit serialization. | |
| XamlVisualEditor.Xaml.Intellisense | Schema inference, completion, and XML namespace resolution. | |
| XamlVisualEditor.Xaml.Language | XAML completion, diagnostics, and hover services. |
Built-in extensions
| Package | Version | Purpose |
|---|---|---|
| XamlVisualEditor.AcpExtension | ACP profiles, authentication, permissions, and transcript UI. | |
| XamlVisualEditor.AnimationEditorExtension | Animation editor panel. | |
| XamlVisualEditor.CollaborationExtension | Collaboration panel. | |
| XamlVisualEditor.DebugSettingsExtension | Debugger settings panel. | |
| XamlVisualEditor.Debugging.DapExtension | DAP-backed .NET debugger integration. | |
| XamlVisualEditor.Debugging.DotNetSdkExtension | .NET SDK debugger integration. | |
| XamlVisualEditor.DotNetTemplatesExtension | .NET project and solution template wizard. | |
| XamlVisualEditor.FileExplorerExtension | File explorer panel. | |
| XamlVisualEditor.GitExtension | Git status, change, and diff panel. | |
| XamlVisualEditor.IdeBridgeExtension | IDE bridge runtime and configuration panel. | |
| XamlVisualEditor.LspSettingsExtension | External language-server settings. | |
| XamlVisualEditor.McpExtension | MCP runtime and permissions panel. | |
| XamlVisualEditor.NavigationExtension | References and language-service navigation. | |
| XamlVisualEditor.OutputExtension | Output channels and problems panel. | |
| XamlVisualEditor.PropertyEditorExtension | Designer selection and property editor integration. | |
| XamlVisualEditor.SolutionExplorerExtension | Solution explorer panel. | |
| XamlVisualEditor.ToolboxExtension | Designer toolbox and insertion commands. | |
| XamlVisualEditor.TreeInspectorExtension | Visual and logical tree inspectors. | |
| XamlVisualEditor.VscodeCompatExtension | VS Code compatibility runtime host. | |
| XamlVisualEditor.WorkspaceExtension | Workspace commands and lifecycle integration. | |
| XamlVisualEditor.XamlEditorExtension | XAML editor property metadata contributions. |
Extension development
Extension packages contain xve.extension.json at the package root and a .NET
assembly implementing IXveExtension. The host exposes typed services for
commands, views, workspaces, diagnostics, editors, navigation, terminals,
settings, storage, logging, dialogs, permissions, and panel hosts.
See the extension guide, migration guide,
and sample projects in tools/ExtensionSamples. To pack the hello sample:
dotnet pack tools/ExtensionSamples/HelloExtension/HelloExtension.csproj -c Release
Repository layout
| Path | Purpose |
|---|---|
src/XamlVisualEditor.App |
Avalonia application, composition root, views, and resources. |
src/XamlVisualEditor.Shell* |
Main window, documents, docking, panels, and shell ViewModels. |
src/XamlVisualEditor.Extensions |
Extension SDK contracts and hosting infrastructure. |
src/XamlVisualEditor.Xaml.* |
Parsing, AST, serialization, intellisense, and language services. |
src/XamlVisualEditor.Designer.* |
Designer abstractions, rendering, adorners, drag-and-drop, and preview host. |
extensions/ |
Built-in extension projects and generated package manifests. |
tests/ |
Unit, integration, performance, and Avalonia Headless UI tests. |
tools/ |
Extension samples, harnesses, CLIs, and host experiments. |
site/ |
Lunet documentation site deployed to GitHub Pages. |
Documentation
Build the documentation site locally with:
./build-docs.sh
cd site
dotnet tool run lunet serve
Contributing
Read CONTRIBUTING.md and the authoritative engineering rules in AGENTS.md. Before opening a pull request, build the Release solution, run the relevant test projects, validate packages, and build the docs.
License
XamlVisualEditor is licensed under the MIT License.
Command-line and automation
The examples use the framework-dependent application command:
dotnet XamlVisualEditor.App.dll
If you use a packaged build, use the platform executable instead.
Open a document or workspace
Use --open to open a XAML document:
dotnet XamlVisualEditor.App.dll --open ./Views/MainView.axaml
Use --workspace to open a project or solution:
dotnet XamlVisualEditor.App.dll --workspace ./Sample.slnx
Map generated AXAML to source projects
If generated AXAML is outside the source tree, set XVE_PROJECT_SOURCE_ROOT.
XVE walks the parent folders of the generated file and uses a matching project folder.
This example maps generated/Sample.App to src/Sample.App/Sample.App.csproj on Linux or macOS:
export XVE_PROJECT_SOURCE_ROOT="$PWD/src"
dotnet XamlVisualEditor.App.dll --open "$PWD/generated/Sample.App/Views/MainView.axaml"
This PowerShell example uses the same folder layout on Windows:
$env:XVE_PROJECT_SOURCE_ROOT = Join-Path $PWD "src"
dotnet XamlVisualEditor.App.dll --open (Join-Path $PWD "generated/Sample.App/Views/MainView.axaml")
The project folder name and the project file name must match the generated project folder name.
Start the MCP server
Use --mcp to start the local HTTP MCP server:
dotnet XamlVisualEditor.App.dll --mcp
The default endpoint is http://127.0.0.1:4712/mcp/.
Use these options to change the transport or HTTP endpoint:
| Option | Values | Default with --mcp |
|---|---|---|
--mcp-transport |
stdio, http, or both |
http |
--mcp-port |
1 through 65535 |
4712 |
--mcp-path |
An HTTP path | /mcp/ |
This example starts an HTTP server on a different endpoint:
dotnet XamlVisualEditor.App.dll --mcp --mcp-port 4812 --mcp-path /editor/
You can also select a transport with the short form:
dotnet XamlVisualEditor.App.dll --mcp=stdio
Use HTTP for a normal desktop process. If the MCP client owns the standard streams, use stdio.
The first MCP connection requests workspace access. The initialize result contains a session token for later requests.
Configure the previewer
If a library workspace needs a separate application assembly, set XVE_PREVIEWER_APP_ASSEMBLY:
export XVE_PREVIEWER_APP_ASSEMBLY="$PWD/bin/Debug/net10.0/Sample.App.dll"
$env:XVE_PREVIEWER_APP_ASSEMBLY = Join-Path $PWD "bin/Debug/net10.0/Sample.App.dll"
Use the full path of the application assembly. The assembly directory must contain its runtime configuration and dependency files.
Set XVE_PREVIEWER_AUTOTRUST=1 to skip the previewer trust prompt:
export XVE_PREVIEWER_AUTOTRUST=1
$env:XVE_PREVIEWER_AUTOTRUST = "1"
CAUTION: Use automatic trust only for a workspace that you trust. The previewer runs workspace code in another process.
Use the IDE bridge
The IDE bridge uses JSON-RPC 2.0 messages with Content-Length framing.
Initialize the bridge before you send document or preview requests.
{"jsonrpc":"2.0","id":1,"method":"bridge.initialize","params":{"workspaceId":null,"clientName":"automation","clientVersion":"1"}}
Use XVE_IDEBRIDGE_AUTOCONSENT=readonly for unattended read-only sessions:
export XVE_IDEBRIDGE_AUTOCONSENT=readonly
$env:XVE_IDEBRIDGE_AUTOCONSENT = "readonly"
The value full also permits write operations.
CAUTION: Use full only for a trusted local client. This value skips the normal permission prompt.
The bridge provides these automation methods:
| Method | Purpose |
|---|---|
document.close |
Close an open document without saving it. |
editor.status |
Return the active document, open-document count, and process memory values. |
preview.export |
Render an open AXAML document and save the preview frame as a PNG file. |
Open the document before you export its preview:
{"jsonrpc":"2.0","id":2,"method":"document.open","params":{"filePath":"./Views/MainView.axaml"}}
{"jsonrpc":"2.0","id":3,"method":"preview.export","params":{"filePath":"./Views/MainView.axaml","outputPath":"./artifacts/MainView.png","timeoutMs":90000}}
{"jsonrpc":"2.0","id":4,"method":"document.close","params":{"filePath":"./Views/MainView.axaml"}}
{"jsonrpc":"2.0","id":5,"method":"editor.status"}
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Avalonia (>= 12.1.3)
- ReactiveUI (>= 26.0.1)
- System.Reactive (>= 7.0.0)
- XamlVisualEditor.Core (>= 0.2.0)
- XamlVisualEditor.Extensions (>= 0.2.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.