/interactive

.NET Interactive takes the power of .NET and embeds it into your interactive experiences. Share code, explore data, write, and learn across your apps in ways you couldn't before.

Primary LanguageC#MIT LicenseMIT

.NET Interactive dotnet bot in space

Discord Build Status Binder

.NET Interactive takes the power of .NET and embeds it into your interactive experiences. Share code, explore data, write, and learn across your apps in ways you couldn't before.

.NET Interactive IS .NET UNLEASHED

Notebooks with .NET

Visual Studio Code

We recently introduced the .NET Interactive Notebooks extension for Visual Studio Code, which adds support for .NET Interactive using the new Visual Studio Code native notebook feature. We encourage you to try it out. If you'd like to contribute, you can start here.

newnotebook


Features

Multi-language notebooks

.NET Interactive enables users to mix languages in a single notebook or cell without a wrapper. The multi-language experience opens up doors for users to use the best language for the task at hand.

Languages supported

  • C# and F#
  • PowerShell built in collaboration with the PowerShell team 💙
  • JavaScript
  • HTML
  • SQL built in collaboration with the Azure Data / SQL team 💙

Coming soon

  • Kusto

What languages are we exploring?

  • Python and R

Variable Sharing

.NET Interactive enables you to write code in multiple languages within a single notebook and in order to take advantage of those languages' different strengths, you might find it useful to share data between them. Read more here.

Notebooks-variable-sharing

The gif above showcases the following:

  • Variable sharing across C#, HTML and JavaScript cells.
  • Multi-language cells.

For more examples on multi-language notebooks and variable sharing check out our polyglot samples.

Visualization

Low code visualization

In just a single line of code easily visualize data with Microsoft SandDance and nteract DataExplorer. For example the code snippet below will render an interactive Microsoft SandDance.

housingData.ExploreWithSandDance().Display();

low-code-visualization

For more low code visualization examples, check out our samples.

Works with your favorite visualization libraries

d3js

The image below showcases the following:

  • C# cell: Define a variable in C#
  • JavaScript cell: Use RequireJS to import d3.js
  • HTML cell: Visualize the data

Full example here.


Jupyter and nteract

Project Jupyter is a popular platform for creating interactive notebooks that can be used for data science, documentation, DevOps, and much more.

There are several ways to get started using .NET with Jupyter, including Jupyter Notebook, JupyterLab, and nteract.

Documentation

You can find additional documentation here.

Packages

We provide a number of packages that can be used to write custom extensions for .NET Interactive or to build your own interactive experiences.

Package Version Description
Microsoft.dotnet-interactive Nuget The dotnet-interactive global tool
Microsoft.DotNet.Interactive Nuget Core types for building applications providing interactive programming for .NET.
Microsoft.DotNet.Interactive.Formatting Nuget Convention-based and highly configurable .NET object formatting for interactive programming, including support for mime types suitable for building visualizations for Jupyter Notebooks and web browsers.
Microsoft.DotNet.Interactive.FSharp Nuget Microsoft.DotNet.Interactive.Kernel implementation for F#
Microsoft.DotNet.Interactive.CSharp Nuget Microsoft.DotNet.Interactive.Kernel implementation for C#
Microsoft.DotNet.Interactive.PowerShell Nuget Microsoft.DotNet.Interactive.Kernel implementation for PowerShell

Contribution Guidelines

You can contribute to .NET Interactive with issues and pull requests. Simply filing issues for problems you encounter is a great way to contribute. Contributing code improvements is greatly appreciated. You can read more about our contribution guidelines here.

Customers & Partners

Azure Synapse Analytics Azure HDInsight (HDI)
Azure Synapse Analytics uses the .NET kernel to write and run quick ad-hoc queries in addition to developing complete, end-to-end big data scenarios, such as reading in data, transforming it, and visualizing it You can launch Jupyter notebooks from your HDInsight cluster to run big data queries against the compute resources in that cluster.