Skip to content

[Experimental] .NET bindings + Avalonia example via Diplomat .NET backend#1378

Draft
irvingouj@Devolutions (irvingoujAtDevolution) wants to merge 2 commits into
masterfrom
test/diplomat-hir-dotnet-avalonia-clean
Draft

[Experimental] .NET bindings + Avalonia example via Diplomat .NET backend#1378
irvingouj@Devolutions (irvingoujAtDevolution) wants to merge 2 commits into
masterfrom
test/diplomat-hir-dotnet-avalonia-clean

Conversation

@irvingoujAtDevolution

Copy link
Copy Markdown
Contributor

⚠️ EXPERIMENTAL — do not merge. This is a draft tracking branch for exploring C# / .NET bindings for IronRDP. It is not production-ready and the API may change.

What this is

Experimental C# bindings (Devolutions.IronRdp) for IronRDP, generated by the Diplomat .NET backend, plus an Avalonia example client that drives them.

Diplomat dependency

The Diplomat .NET backend was upstreamed in rust-diplomat/diplomat#1164. This branch pins the diplomat / diplomat-runtime git dependencies to the reviewed+merged commit 882006b1 (content-identical to upstream merge dbbfc3e0) instead of floating on a development branch.

The most recent commit moves that pin and regenerates the bindings; the regeneration delta is documentation-only (lifetime <remarks> warnings + a grammar fix) — no public API or behavior change.

Validation done locally

  • ✅ Rust cdylib builds against the pinned Diplomat commit
  • ✅ C# bindings build + NuGet pack (GeneratePackageOnBuild)
  • ✅ Avalonia example builds
  • Live RDP session: the Avalonia example connects to a real host, completes CredSSP auth, reaches active stage, and exchanges clipboard virtual-channel messages

Known caveats / follow-ups

  • Diplomat .NET backend is best-effort maintained upstream (like the Kotlin backend).
  • xtask/src/ffi.rs still installs diplomat-tool from a fork branch — should move to upstream now that fix(rdpsnd): handle AudioFormat renegotiation in Ready state #1164 is merged.
  • xtask ffi build hardcodes ./target/; breaks under a custom CARGO_TARGET_DIR.
  • Could repoint the Diplomat dependency from the fork to upstream rust-diplomat/diplomat to drop the fork entirely.

…dings

Move the diplomat / diplomat-runtime git dependencies from the floating
`dotnet-picky-ironrdp-compat` branch to the fixed commit 882006b1 — the
reviewed and merged .NET backend (rust-diplomat/diplomat#1164, content-
identical to upstream merge dbbfc3e0).

Regenerated C# bindings; the delta is documentation-only (lifetime
<remarks> warnings + a grammar fix), with no public API or behavior change.

Verified end-to-end: cdylib builds against the pinned commit, C# bindings
build and pack, and the Avalonia example establishes a live RDP session
(active stage + clipboard channel).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant