C# all the way down to the microcontroller.

.NET nanoFramework™ makes it easy to write C# code for embedded systems. Use the tools and skills you already have – Visual Studio, NuGet, real debugging – on constrained devices from many silicon vendors.

dotnet tool install -g nanoff
Program.cs● Device connected
using System.Device.Gpio;
using System.Threading;

var gpio = new GpioController();
var led  = gpio.OpenPin(2, PinMode.Output);

while (true)
{
    led.Toggle();
    Thread.Sleep(500);  // that's it. blinky.
}
✓ Deployed to deviceBreakpoints · step · watch
NuGet downloads
30M+
sensor & display libraries
100+
licensed, free for commercial use
MIT
member project
.NET Foundation

Why .NET nanoFramework

Embedded development that feels like the rest of your .NET work.

Your C# skills, unchanged

APIs aligned with .NET IoT. Generics, familiar namespaces and NuGet packages – no new language to learn.

Real debugging on real hardware

Breakpoints, stepping and watches on the device, from Visual Studio or VS Code. No printf archaeology.

Connected by default

Wi-Fi, Ethernet and AT modems, TLS 1.3, MQTT, and SDKs for Azure and AWS.

Open, community-driven

Built in the open on GitHub by contributors, partners and silicon vendors. Successor to .NET Micro Framework.

Get started

From unboxing to blinking in three steps.

Grab a supported board, a USB cable and ten minutes. The full walkthrough lives in the docs.

Read the getting-started guide
  1. Install the extension

    For Visual Studio or VS Code, from the Marketplace.

  2. Flash the firmware

    nanoff installs the right image for your board.

    nanoff --target <YOUR_TARGET> --serialport COM3 --update
  3. Deploy and debug

    Create a project from the template, press F5, set a breakpoint. You're doing embedded.

Community

Come build with us.

Questions, show-and-tell, or your first pull request – the team and community hang out on Discord and GitHub.

Contribute

Code, docs, samples or a blog post – everything on this site is Markdown in a GitHub repo, so it's all one pull request away.