Skip to main content

Installation

Hermodr is distributed as a set of NuGet packages. Install only the packages you actually need.

Prerequisites

Supported Runtimes

All packages in the Hermodr solution multi-target the following .NET runtimes:

RuntimeVersion
.NET8, 9, 10

.NET 8 is the current Long-Term Support (LTS) release and the recommended minimum for new projects.
.NET 10 is the latest LTS release and is fully supported.

Required Infrastructure

All packages depend on the Microsoft Dependency Injection infrastructure. Make sure your project references:

dotnet add package Microsoft.Extensions.DependencyInjection

This is already provided automatically in ASP.NET Core, Worker Service, and most other host-based project templates.

ASP.NET Core Requirement

The Hermodr.Schema.AsyncApi package references the ASP.NET Core shared framework (Microsoft.AspNetCore.App) because it integrates with the Saunter AsyncAPI middleware. It must be used in a project that targets the Microsoft.NET.Sdk.Web SDK or explicitly includes the Microsoft.AspNetCore.App framework reference.

Per-Package Dependencies

The table below lists the key NuGet packages that each library brings in as transitive dependencies. You do not need to install these directly — they are declared in each package's .nuspec and restored automatically.

PackageKey Transitive Dependencies
Hermodr.Annotations(none — pure attribute library)
Hermodr.PublisherCloudNative.CloudEvents · Microsoft.Extensions.Options · Microsoft.Extensions.Logging.Abstractions
Hermodr.Publisher.AzureServiceBusAzure.Messaging.ServiceBus ≥ 7.20
Hermodr.Publisher.RabbitMqRabbitMQ.Client ≥ 7.2 · Hermodr.Amqp.Annotations
Hermodr.Publisher.MassTransitMassTransit ≥ 9.1
Hermodr.Publisher.WebhookMicrosoft.Extensions.Http.Resilience ≥ 9.6
Hermodr.Publisher.OutboxDeveel.Repository.Manager · Microsoft.Extensions.Hosting.Abstractions
Hermodr.Publisher.Outbox.EntityFrameworkHermodr.Publisher.Outbox · Deveel.Repository.EntityFramework · Microsoft.EntityFrameworkCore.Relational
Hermodr.SubscriptionsHermodr.Publisher · Deveel.Filters · Microsoft.Extensions.Logging.Abstractions
Hermodr.SchemaCloudNative.CloudEvents
Hermodr.Schema.YamlYamlDotNet ≥ 16.3
Hermodr.Schema.AsyncApiSaunter ≥ 0.13 · YamlDotNet ≥ 16.3 · ASP.NET Core shared framework
Hermodr.TestPublisherHermodr.Publisher

Core package

Every application that publishes events needs the core publisher package:

dotnet add package Hermodr.Publisher

Channel packages

Add one or more channel packages depending on the transports you want to use:

# Azure Service Bus
dotnet add package Hermodr.Publisher.AzureServiceBus

# RabbitMQ
dotnet add package Hermodr.Publisher.RabbitMq

# MassTransit
dotnet add package Hermodr.Publisher.MassTransit

# HTTP Webhooks
dotnet add package Hermodr.Publisher.Webhook

# Transactional Outbox
dotnet add package Hermodr.Publisher.Outbox

# Transactional Outbox + Entity Framework Core
dotnet add package Hermodr.Publisher.Outbox.EntityFramework

Subscriptions package

To add in-process event subscription and dispatching:

dotnet add package Hermodr.Subscriptions

Annotation package

If you want to annotate your data-transfer classes with event metadata:

dotnet add package Hermodr.Annotations

For AMQP-specific routing metadata (exchange name, routing key):

dotnet add package Hermodr.Amqp.Annotations

Schema packages

# Core schema model, builder, JSON writer, and validator
dotnet add package Hermodr.Schema

# Export schemas as YAML
dotnet add package Hermodr.Schema.Yaml

# Export schemas as AsyncAPI 2.x documents (JSON or YAML)
dotnet add package Hermodr.Schema.AsyncApi

Test package

dotnet add package Hermodr.TestPublisher

Pre-release builds

Pre-release packages are published to GitHub Packages. To consume them, add the Deveel GitHub Packages feed to your NuGet sources:

<!-- nuget.config -->
<configuration>
<packageSources>
<add key="deveel-github" value="https://nuget.pkg.github.com/deveel/index.json" />
</packageSources>
</configuration>

You will also need a GitHub Personal Access Token (PAT) with read:packages scope and add it as a credential for the feed.

What's next?

Quick Start — publish your first event in minutes.