Skip to content
Jung Hyun, Nam edited this page May 28, 2026 · 4 revisions

FAQ

What does Cadenza actually do?

It's a family of MSBuild SDKs. Adding #:sdk Cadenza.X@<version> to the top of a .cs file tells dotnet run to pull that SDK, which configures the build, exposes a curated set of bare-name APIs via global using static, and (in the case of Worker / Web / MCP / Agent) wires up a host. The script stays a script — no .csproj is generated.

How is this different from dotnet-script or CS-Script?

Cadenza is not a separate hosted scripting runtime. It sits on .NET 10's native file-based apps. That means:

  • No separate install — dotnet is enough.
  • It evolves with the platform; no maintenance treadmill against the upstream language.
  • The same IntelliSense story as a real .NET project — the Roslyn LSP just works.

See the launch landing page for the full positioning.

Why exact versions in #:sdk?

The MSBuild SDK reference resolver doesn't accept floating versions (1.*, @latest). Cadenza turns that into a feature: a script you receive today still runs in five years, on the exact SDK its author tested against.

A version-less UX is on the roadmap as an optional tool (Cadenza.SdkResolver) — opt in if you want it, opt out and keep reproducibility otherwise.

Will my IntelliSense work in Cursor / Kiro / other forks?

Yes, with the community-rebuilt C# extension. The official Microsoft build is gated to Microsoft-branded IDEs; on forks, install dotnetdev-kr-custom/csharp from Open VSX. See Editor Setup for the full walkthrough.

Debugging on forks is restricted by the vsdbg license — for stepping, point at the netcoredbg-based build.

Can I add NuGet packages?

Yes. Add #:package Name@Version lines.

#:sdk Cadenza@1.0.15
#:package Humanizer@3.0.0

Can a Cadenza script grow into a real project?

Yes — dotnet project convert app.cs produces a regular .csproj. Like a cadenza in a concerto: improvised at first, eventually written down. Nothing's lost in the conversion.

Why is Cadenza.Agent not AOT-clean when everything else is?

Microsoft.Extensions.AI's tool binding uses reflection — that's incompatible with NativeAOT today. If you need AOT for an AI workload, compose Cadenza.Web + a manual IChatClient rather than Cadenza.Agent.

My web/agent works locally but not in a container — what gives?

You're almost certainly bound to localhost (the loopback interface). Inside a container that's unreachable from the host. Bind to 0.0.0.0:

HostUrls("http://0.0.0.0:8080");   // Cadenza.Web
HostName("0.0.0.0");               // Cadenza.Agent

See Deployment Container.

Is Cadenza opinionated about logging / config / DI?

No. It uses the standard .NET Generic Host (or Web Host for Web/Agent), so logging is ILogger, config is IConfiguration, DI is IServiceProvider. The Tier 1 bare names are a thin convenience layer on top — drop down to the platform API any time.

How do I contribute?

  • File issues / PRs on github.com/rkttu/cadenza
  • Add samples — every new .cs in samples/ should run cleanly with dotnet run
  • Improve this wiki — the source lives at cadenza.wiki (or just edit on GitHub's wiki UI)

See also

Clone this wiki locally