![]() |
VOOZH | about |
dotnet add package Cyrena.Extensa.Core --version 0.5.0
NuGet\Install-Package Cyrena.Extensa.Core -Version 0.5.0
<PackageReference Include="Cyrena.Extensa.Core" Version="0.5.0" />
<PackageVersion Include="Cyrena.Extensa.Core" Version="0.5.0" />Directory.Packages.props
<PackageReference Include="Cyrena.Extensa.Core" />Project file
paket add Cyrena.Extensa.Core --version 0.5.0
#r "nuget: Cyrena.Extensa.Core, 0.5.0"
#:package Cyrena.Extensa.Core@0.5.0
#addin nuget:?package=Cyrena.Extensa.Core&version=0.5.0Install as a Cake Addin
#tool nuget:?package=Cyrena.Extensa.Core&version=0.5.0Install as a Cake Tool
Cyrena.Extensa.Core is the core extension system for Cyréna's dynamic plugin framework. It defines the contracts and models that all extensions must implement to be discovered and loaded at runtime by the Extensa loader. Extensions are compiled as separate assemblies/DLLs and loaded dynamically with dependency resolution.
Version: 0.5.0
Target Framework: .NET 10.0
Namespaces: Cyrena.Extensa.Contracts, Cyrena.Extensa.Models
IExtensionThe interface all extensions must implement. This is the single entry point for an extension to integrate with Cyréna.
public interface IExtension
{
/// <summary>
/// Called by the Extensa.Loader to add the extension to the application dependencies
/// </summary>
/// <param name="builder"><see cref="CyrenaBuilder"/></param>
void BuildExtension(CyrenaBuilder builder);
}
Key behaviors:
BuildExtension is called during application startup by the Extensa loader.CyrenaBuilder parameter provides access to Services, FeatureOptions, FeatureAssemblies, BuildActions, and RunActions.IExtension.Extension (Abstract Base)Convenience abstract base class implementing IExtension with an empty BuildExtension method.
public abstract class Extension : IExtension
{
public virtual void BuildExtension(CyrenaBuilder builder) { }
}
Extend this class if your extension needs no build-time configuration, or override BuildExtension to add custom setup.
ExtensionInfoMetadata describing an extension package. Used by the Extensa loader for discovery, dependency resolution, and UI display.
public class ExtensionInfo
{
public string Id { get; set; } = default!;
public string Name { get; set; } = default!;
public string? Description { get; set; };
public Version Version { get; set; } = Version.Parse("1.0.0");
public string? EntryAssemblyFile { get; set; };
public Dependency[] Dependencies { get; set; } = [];
}
Properties:
Id: Unique identifier for the extension (e.g., com.example.myextension).Name: Human-readable name.Description: Optional description.Version: Extension version. Defaults to 1.0.0.EntryAssemblyFile: The main DLL file name containing the IExtension implementation.Dependencies: Array of Dependency objects specifying required extensions. Defaults to empty array.DependencyRepresents a dependency on another extension with minimum version requirements.
public class Dependency
{
public Dependency() { }
public Dependency(string id, Version minVersion);
public string Id { get; set; } = default!;
public Version MinVersion { get; set; } = default!;
}
Id: The Id of the required extension.MinVersion: The minimum required version.ExtensionInfo manifests.BuildExtension(CyrenaBuilder) is called on each IExtension implementation.IStartupTask.RunAsync is called for all registered startup tasks.Reference Cyrena.Extensa.Core to:
IExtension (or extend Extension) as the entry pointExtensionInfo metadata for the extension manifestDependency objects for required extensionsCyrenaBuilder in BuildExtension to register all services, modes, plugins, and UI componentsExample - Minimal Extension:
public class MyExtension : Extension
{
public override void BuildExtension(CyrenaBuilder builder)
{
builder.Services.AddSingleton<IMyService, MyService>();
}
}
Example - Extension with Dependencies:
// In ExtensionInfo (JSON manifest):
{
"Id": "com.example.advanced",
"Name": "Advanced Features",
"Version": "1.2.0",
"Dependencies": [
{ "Id": "com.example.base", "MinVersion": "1.0.0" }
]
}
Required References for a Typical Extension:
Cyrena.Core - Core contracts and buildersCyrena.Extensa.Core - Extension entry pointCyrena.Components.Core - If adding UI componentsCyrena.Persistence.Core - If using data storageCyrena.Persistence.File)Microsoft.SemanticKernel - For kernel plugins and functionsCyrena.Core — CyrenaBuilder, EntityCyrena.Extensa.Core0.5.0../../../sdk| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 net10.0 is compatible. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
This package is not used by any NuGet packages.
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.5.0 | 101 | 5/13/2026 |