ClrKernel 0.4.1
See the version list below for details.
dotnet tool install --global ClrKernel --version 0.4.1
dotnet new tool-manifest
dotnet tool install --local ClrKernel --version 0.4.1
#tool dotnet:?package=ClrKernel&version=0.4.1
nuke :add-package ClrKernel --version 0.4.1
ClrKernel
A Jupyter kernel for .NET. C# cells are evaluated with Roslyn's scripting engine
(Microsoft.CodeAnalysis.CSharp.Scripting),
with more CLR languages (PowerShell, F#) on the roadmap. Notebooks run
interactively in JupyterLab / VS Code (Jupyter extension) and headlessly via
nbconvert or papermill — including from schedulers like SQL Server Agent.
ClrKernel is a maintained fork of
SciSharp/ICSharpCore, created after
Microsoft deprecated .NET Interactive / Polyglot Notebooks (April 2026).
Relative to upstream it adds: correct headless execution under
nbclient/papermill, full output capture for async/await cells, control
channel + heartbeat + graceful shutdown_request handling, patched vulnerable
dependencies, and the kernelspec shipped inside the NuGet package.
Install
dotnet tool install --global ClrKernel
jupyter kernelspec install "$(clrkernel --kernel-spec-path)" --user --name clrkernel
jupyter kernelspec list # should show: clrkernel
Requires a .NET 8+ runtime (RollForward=Major: newer majors work) and Jupyter.
Use
Pick the ClrKernel (C#) kernel in JupyterLab or VS Code. Cells support
#r "nuget: Package, Version" and #r "path/to/local.dll" references, with
REPL-style state persisting across cells.
Importing shared libraries
#!import loads C# code from another file into the session — use it to share
helper libraries between notebooks, no .NET Interactive required:
#!import "../lib/jobbooks.dib"
Supports .dib (C# sections run; markdown and other-language sections are
skipped), .ipynb (code cells run), and .csx/.cs (whole file). Relative
paths resolve against the notebook's directory, and nested #!imports inside
a library resolve relative to that library's own file. Each resolved file runs
once per session — re-importing is a no-op unless you pass --force
(#!import --force "lib.dib"), which is handy while iterating on the library
itself. Imported files can use #r directives, including #r "nuget: ...",
and can #!import further files.
Headless / scheduled execution:
jupyter nbconvert --to notebook --execute --output out.ipynb etl.ipynb
papermill etl.ipynb runs/etl_out.ipynb -k clrkernel --language .net-csharp -p run_date 2026-08-04
A failing cell exits non-zero (job schedulers see the failure); papermill also persists the partially-executed output notebook as a diagnostic artifact.
Develop
./scripts/install-dev-kernel.sh # kernel 'clrkernel-dev' running from bin/ output
# iterate: dotnet build + restart kernel
./scripts/install-local-tool.sh # pack + install the global tool from a local
# feed; tests the full packaged experience
clrkernel --kernel-spec-details # show which kernelspec the binary resolves
License
Apache 2.0, preserving the upstream license. Original work © SciSharp (Kerry Jiang, Haiping Chen, and contributors); fork maintained by ClrKernel.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. 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. |
This package has no dependencies.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.2.0 | 0 | 10/14/2026 |
| 1.1.0 | 122 | 10/6/2026 |
| 1.0.0 | 91 | 10/6/2026 |
| 0.15.0 | 96 | 10/2/2026 |
| 0.14.1 | 107 | 9/26/2026 |
| 0.14.0 | 148 | 9/12/2026 |
| 0.13.0 | 136 | 9/10/2026 |
| 0.12.0 | 122 | 9/8/2026 |
| 0.11.0 | 133 | 9/2/2026 |
| 0.10.0 | 129 | 8/29/2026 |
| 0.9.2 | 138 | 8/19/2026 |
| 0.9.1 | 127 | 8/15/2026 |
| 0.9.0 | 129 | 8/11/2026 |
| 0.8.0 | 127 | 8/10/2026 |
| 0.7.0 | 119 | 8/8/2026 |
| 0.6.0 | 115 | 8/7/2026 |
| 0.5.0 | 127 | 8/7/2026 |
| 0.4.1 | 113 | 8/7/2026 |
| 0.4.0 | 120 | 8/7/2026 |
| 0.3.0 | 123 | 8/5/2026 |