ExperimentFramework.Plugins 0.23.0

dotnet add package ExperimentFramework.Plugins --version 0.23.0
                    
NuGet\Install-Package ExperimentFramework.Plugins -Version 0.23.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ExperimentFramework.Plugins" Version="0.23.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ExperimentFramework.Plugins" Version="0.23.0" />
                    
Directory.Packages.props
<PackageReference Include="ExperimentFramework.Plugins" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add ExperimentFramework.Plugins --version 0.23.0
                    
#r "nuget: ExperimentFramework.Plugins, 0.23.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package ExperimentFramework.Plugins@0.23.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=ExperimentFramework.Plugins&version=0.23.0
                    
Install as a Cake Addin
#tool nuget:?package=ExperimentFramework.Plugins&version=0.23.0
                    
Install as a Cake Tool

ExperimentFramework.Plugins

Dynamic assembly loading and plugin system for ExperimentFramework. Enables runtime loading of experimental implementations from external DLLs with configurable isolation modes.

Installation

dotnet add package ExperimentFramework.Plugins

Quick Start

1. Register the plugin system

builder.Services.AddExperimentFrameworkPlugins(options =>
{
    options.PluginDirectory = "./plugins";
    options.IsolationMode = PluginIsolationMode.Isolated;
});

2. Load plugins at runtime

Plugins are discovered automatically from the configured directory. Each plugin assembly is scanned for experiment implementations that match registered service types.

3. Hot reload (optional)

builder.Services.AddExperimentFrameworkPlugins(options =>
{
    options.PluginDirectory = "./plugins";
    options.EnableHotReload = true;
});

Features

  • Runtime loading - Load experiment implementations from external DLLs without recompilation
  • Isolation modes - Configure assembly load context isolation per plugin
  • Hot reload - Watch plugin directories and reload assemblies on change
  • Plugin manifests - Declarative metadata for plugin discovery and validation
  • Security - Optional signature verification and sandboxing for untrusted plugins
  • DI integration - Seamless integration with Microsoft.Extensions.DependencyInjection

Isolation Modes

Mode Description
Shared Plugin runs in the default load context (no isolation)
Isolated Plugin runs in its own AssemblyLoadContext (default)
Collectible Isolated context that supports unloading for hot reload

Plugin Manifest

Plugins can include a manifest file for metadata and dependency declarations:

{
  "id": "my-plugin",
  "version": "1.0.0",
  "assembly": "MyPlugin.dll",
  "experiments": [
    {
      "serviceType": "IMyService",
      "implementationType": "MyPlugin.MyServiceImpl"
    }
  ]
}

Documentation

See the full documentation for advanced configuration, security options, and plugin authoring guides.

Product 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 is compatible.  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 is compatible.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (6)

Showing the top 5 NuGet packages that depend on ExperimentFramework.Plugins:

Package Downloads
ExperimentFramework.PluginHostSample

Package Description

ExperimentFramework.SamplePlugin

Package Description

AspireDemo.Blog.Plugins.Auth

Package Description

AspireDemo.Blog.Plugins.Data

Package Description

AspireDemo.Blog.Plugins.Syndication

Package Description

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.23.0 84 6/2/2026
0.22.17 144 5/28/2026
0.22.16 151 4/24/2026
0.22.15 140 4/24/2026
0.22.14 138 4/24/2026
0.22.13 141 4/24/2026
0.22.12 144 4/24/2026
0.22.11 150 4/24/2026
0.22.10 137 4/23/2026
0.22.9 141 4/23/2026
0.22.8 137 4/22/2026
0.22.7 157 4/22/2026
0.22.6 135 4/22/2026
0.22.5 192 4/22/2026