Skip to content

Nebula.NET

Framework support matrix

Which .NET runtimes, app models and languages Nebula.NET protects — .NET Framework 4.x through .NET 10, Native AOT, Blazor, MAUI/Xamarin, Unity, and more.

Nebula works at the IL level (via dnlib), so it protects any managed .NET assembly regardless of the language it was written in or the app model it ships in. This page is the quick answer to “does it support my stack?” — for per-project settings, see Protecting different project types.

Runtimes

RuntimeSupportedNotes
.NET Framework 4.6.2 – 4.8.1Full support, incl. mixed net462;net6.0+ multi-targeting via the MSBuild integration.
.NET 6 / 7 / 8Full support.
.NET 9Full support.
.NET 10Full support.
.NET Standard 2.0 / 2.1 librariesProtected like any other managed library.
MonoManaged assemblies protect normally (e.g. Unity’s Mono backend).

App models

App modelSupportedNotes
Class libraries / NuGet packagespreservePublicApi: true keeps your public contract; internals are renamed. Point Nebula at a .nupkg to repack a protected package.
Console apps / Windows services / daemonsNo public surface — protect everything for maximum strength.
ASP.NET Core / Web APIPreserve controllers, DTO property names and anything bound by name; internals obfuscate freely (auto-detected).
Blazor ServerServer-side assemblies protect normally.
Blazor WebAssemblyThe managed assemblies are downloaded to the browser — the highest-exposure target. Protect a published app with the nebula blazor command (obfuscates + repairs the integrity manifest).
WPF / WinFormsPreserve XAML/designer-bound members (auto-detected; exclude the rest).
.NET MAUI / XamarinManaged app assemblies protect on every head (Android/iOS/Windows/Mac Catalyst); keep XAML-bound members, [DllImport] preserved automatically. See Protecting MAUI & Xamarin.
UnityPreserve [SerializeField]/serialized fields and SendMessage targets; MonoBehaviour subclasses referenced in scenes.
Single-file / self-containedObfuscate the managed assemblies, then publish. (Anti-tamper’s self-hash no-ops inside a single-file bundle — rely on control-flow + string encryption there.)
Native AOTObfuscate the managed IL before the AOT publish. AOT already removes IL from the shipped native image; Nebula hardens the managed layer beforehand (and any assemblies that stay managed), so your build pipeline is defended end to end.

Languages

LanguageSupportedNotes
C#
F#IL-level, so fully supported; keep autoDetect: true for F#‘s compiler-generated members.
VB.NETFully supported.
Any IL-producing languageIf it compiles to a managed assembly, Nebula protects it.

Delivery & CI

SurfaceSupported
Command-line (nebula, config-driven, documented exit codes)
Desktop GUI
MSBuild / CI integration (dotnet build and Visual Studio / msbuild.exe)✅ — see MSBuild & CI
Multi-targeted projects (every TFM protected automatically)

The recurring rule across every stack: anything resolved by name at runtime (reflection, serialization, XAML/Razor/Blazor binding) must be preserved. Nebula auto-detects most of it, and you can preserve the rest explicitly.

Don’t see your exact case? Ask us — if it compiles to a managed .NET assembly, it’s in scope.