diff --git a/src/core/Elsa.Core/Elsa.Core.csproj b/src/core/Elsa.Core/Elsa.Core.csproj index c25a29184..cfd72ab1c 100644 --- a/src/core/Elsa.Core/Elsa.Core.csproj +++ b/src/core/Elsa.Core/Elsa.Core.csproj @@ -29,6 +29,7 @@ + diff --git a/src/core/Elsa.Core/Extensions/ElsaServiceCollectionExtensions.cs b/src/core/Elsa.Core/Extensions/ElsaServiceCollectionExtensions.cs index 7420a52cd..9eca29db9 100644 --- a/src/core/Elsa.Core/Extensions/ElsaServiceCollectionExtensions.cs +++ b/src/core/Elsa.Core/Extensions/ElsaServiceCollectionExtensions.cs @@ -35,6 +35,7 @@ using Elsa.Services.Workflows; using Elsa.Services.WorkflowStorage; using Elsa.StartupTasks; using MediatR; +using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection.Extensions; using Newtonsoft.Json; using NodaTime; @@ -80,6 +81,7 @@ namespace Microsoft.Extensions.DependencyInjection optionsBuilder .AddWorkflowsCore() + .AddConfiguration() .AddCoreActivities(); services.Decorate(); @@ -276,12 +278,20 @@ namespace Microsoft.Extensions.DependencyInjection return options; } - private static ElsaOptionsBuilder AddCoreActivities(this ElsaOptionsBuilder services) + private static ElsaOptionsBuilder AddConfiguration(this ElsaOptionsBuilder options) { - if (!services.WithCoreActivities) - return services; + // When using Elsa in console apps, no configuration will be registered by default, but some Elsa services depend on this service (even when there is nothing configured). + options.Services.TryAdd(new ServiceDescriptor(typeof(IConfiguration), _ => new ConfigurationBuilder().AddInMemoryCollection().Build(), ServiceLifetime.Singleton)); - return services + return options; + } + + private static ElsaOptionsBuilder AddCoreActivities(this ElsaOptionsBuilder options) + { + if (!options.WithCoreActivities) + return options; + + return options .AddActivitiesFrom() .AddActivitiesFrom(); }