Skip to content

Bump the nuget-dependencies group with 26 updates#37

Open
dependabot[bot] wants to merge 1 commit into
devfrom
dependabot/nuget/nuget-dependencies-69c5778925
Open

Bump the nuget-dependencies group with 26 updates#37
dependabot[bot] wants to merge 1 commit into
devfrom
dependabot/nuget/nuget-dependencies-69c5778925

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Jun 14, 2026

Copy link
Copy Markdown

Updated Injectio from 5.1.0 to 6.1.0.

Release notes

Sourced from Injectio's releases.

6.1.0

Full Changelog: loresoft/Injectio@v6.0.0...v6.1.0

6.0.0

What's Changed

Full Changelog: loresoft/Injectio@v5.2.1...v6.0.0

6.0.0-beta.3

Full Changelog: loresoft/Injectio@v6.0.0-beta.2...v6.0.0-beta.3

6.0.0-beta.2

Full Changelog: loresoft/Injectio@v6.0.0-beta.1...v6.0.0-beta.2

6.0.0-beta.1

What's Changed

Full Changelog: loresoft/Injectio@v5.2.1...v6.0.0-beta.1

5.2.2

Full Changelog: loresoft/Injectio@v5.2.1...v5.2.2

5.2.1

Full Changelog: loresoft/Injectio@v5.2.0...v5.2.1

5.2.0

Full Changelog: loresoft/Injectio@v5.1.0...v5.2.0

Commits viewable in compare view.

Updated Microsoft.AspNetCore.OpenApi from 10.0.3 to 10.0.9.

Release notes

Sourced from Microsoft.AspNetCore.OpenApi's releases.

No release notes found for this version range.

Commits viewable in compare view.

Updated Microsoft.CodeAnalysis.Analyzers from 3.11.0 to 5.3.0.

Release notes

Sourced from Microsoft.CodeAnalysis.Analyzers's releases.

5.0.4

Release

5.0.2

Release Notes
Install Instructions

Repos

5.0.1

Release Notes
Install Instructions

Repo

4.2.0-4.22266.5

Release

4.2.0-3.22151.16

Release

4.2.0-1.22108.11

Release

4.0.0-2.21354.7

Release

4.0.0-2.21254.26

Release

4.0.0-1.21277.15

Release

Commits viewable in compare view.

Updated Microsoft.CodeAnalysis.Common from 5.0.0 to 5.3.0.

Updated Microsoft.CodeAnalysis.CSharp from 5.0.0 to 5.3.0.

Updated Microsoft.CodeAnalysis.ResxSourceGenerator from 3.11.0-beta1.24527.2 to 3.11.0-beta1.26226.5.

Release notes

Sourced from Microsoft.CodeAnalysis.ResxSourceGenerator's releases.

No release notes found for this version range.

Commits viewable in compare view.

Updated Microsoft.Extensions.Hosting.Abstractions from 10.0.3 to 10.0.9.

Release notes

Sourced from Microsoft.Extensions.Hosting.Abstractions's releases.

No release notes found for this version range.

Commits viewable in compare view.

Updated Microsoft.Extensions.Http from 10.0.3 to 10.0.9.

Release notes

Sourced from Microsoft.Extensions.Http's releases.

No release notes found for this version range.

Commits viewable in compare view.

Updated Microsoft.Extensions.Logging from 10.0.3 to 10.0.9.

Release notes

Sourced from Microsoft.Extensions.Logging's releases.

No release notes found for this version range.

Commits viewable in compare view.

Updated NLog from 6.1.0 to 6.1.3.

Release notes

Sourced from NLog's releases.

6.1.3

Improvements

  • #​6168 PropertiesDictionary - Preserve MessageTemplate property details when adding extra properties. (@​snakefoot)
  • #​6149 LoggingRule - Updating FinalMinLevel should also update MinLevel when same LogLevel. (@​snakefoot)
  • #​6165 AsyncTaskTarget - Retry with help from Task.Delay. (@​snakefoot)
  • #​6164 DateLayoutRenderer - UniversalTime = false should only convert to local when UTC. (@​snakefoot)
  • #​6138 SimpleLayout skip Precalculate when INoAllocationStringValueRenderer available. (@​reabr)
  • #​6158 TemplateEnumerator - Optimize ParseTextPart by direct calling IndexOfAny. (@​snakefoot)
  • #​6152 TemplateEnumerator - Optimize parsing of single digit holename. (@​snakefoot)
  • #​6142 InternalLogger - Skip allocating params array when no exception. (@​snakefoot)
  • #​6145 InternalLogger - Handle Exception ToString can throw with AOT. (@​snakefoot)
  • #​6154 ColoredConsoleTarget - Optimize Console Coloring for Word Highlight. (@​snakefoot)
  • #​6159 ColoredConsoleTarget - Reset capture of previous colors after ResetDefaultColors. (@​snakefoot)
  • #​6140 TryParseEnum - Apply Enum.TryParse since better for AOT. (@​snakefoot)
  • #​6143 Fixed various issues reported by EnableNETAnalyzers. (@​snakefoot)

6.1.2

Improvements

  • #​6116 PropertyTypeConverter - Prioritize IFormattable ToString when Format specified. (@​snakefoot)
  • #​6129 GZipFile - Support Header / Footer / WriteBom. (@​snakefoot)
  • #​6126 FileTarget - Alert when FileName needs to be repaired. (@​snakefoot)
  • #​6113 FileTarget - Upfront validation of ArchiveSuffixFormat property. (@​snakefoot)
  • #​6110 FileTarget - Improve repair of legacy ArchiveFileName. (@​snakefoot)
  • #​6107 LoggingRule - Added WriteTo-method to match NLog.config. (@​snakefoot)
  • #​6106 LoggingRule - Added MinLevel-property to match NLog.config. (@​snakefoot)
  • #​6118 LoggingRule - Update FinalMinLevel-property to match NLog.config. (@​snakefoot)
  • #​6123 Layout.IsNullOrEmpty similar to string.IsNullOrEmpty. (@​snakefoot)
  • #​6119 TargetPropertyWithContext - Added alias Value for Layout. (@​snakefoot)
  • #​6132 TargetPropertyWithContext - ToString returns Name and Value. (@​snakefoot)
  • #​6105 MessageTemplateParameters - Reduce code complexity. (@​snakefoot)
  • #​6131 + #​6133 Refactor NLog source code to fix nullable warnings. (@​snakefoot)

6.1.1

Improvements

  • #​6101 LogFactory - Flush / FlushAsync asynchronous completion outside Target lock. (@​snakefoot)
  • #​6100 NLog.Targets.AtomicFile supporting NetStandard2 with Win32 API. (@​michailf)
  • #​6094 XmlLayout - Faster XML encoding with INoAllocationStringValueRenderer. (@​snakefoot)
  • #​6091 LiteralWithRawValueLayoutRenderer - Only support RawValue when possible. (@​snakefoot)
  • #​6088 CachedLayoutRendererWrapper - Allow literal optimization when caching not needed. (@​snakefoot)

Commits viewable in compare view.

Updated NLog.Extensions.Logging from 6.1.1 to 6.1.3.

Release notes

Sourced from NLog.Extensions.Logging's releases.

6.1.3

  • #​838 NLogLoggerFactory DisposeAsync with ConfigureAwait(false) (@​11v1)
  • #​834 + #​835 MicrosoftConsoleJsonLayout - Added IncludeActivityIds to output TraceId + SpanId + ParentId (@​snakefoot)
  • #​837 MicrosoftConsoleJsonLayout - Keep encoded newlines for Exception (@​snakefoot)
  • #​843 Updated to NLog v6.1.3 (@​snakefoot)

6.1.2

  • #​831 MicrosoftConsoleJsonLayout - Forward DottedRecursion to State-JsonLayout (@​snakefoot)
  • #​832 Updated to NLog v6.1.1 (@​snakefoot)

Commits viewable in compare view.

Updated NLog.Web.AspNetCore from 6.1.1 to 6.1.3.

Release notes

Sourced from NLog.Web.AspNetCore's releases.

6.1.3

  • #​1137 Updated dependency NLog v6.1.3 (@​snakefoot)

6.1.2

  • #​1119 Updated dependency NLog v6.1.1 (@​snakefoot)

Commits viewable in compare view.

Updated NRedisStack from 1.3.0 to 1.5.0.

Release notes

Sourced from NRedisStack's releases.

No release notes found for this version range.

Commits viewable in compare view.

Updated NSwag.AspNetCore from 14.6.3 to 14.7.1.

Release notes

Sourced from NSwag.AspNetCore's releases.

14.7.1

[!IMPORTANT]
Upgrade directly from v14.6.3 to v14.7.1 — skip v14.7.0.

v14.7.0 bundled NJsonSchema v11.6.0, which contained a regression that silently dropped nullability on required T? / [JsonRequired] T? DTO properties. The resulting OpenAPI/JSON schema marked those properties as non-nullable, so generated TypeScript and C# clients lost null-safety for fields the server can legitimately return as null (#​5359).

Corrections to v14.7.0

v14.7.1 updates to NJsonSchema v11.6.1, which corrects the handling of the C# required keyword and [JsonRequired]:

  • These are now treated as presence markers (the property must be present in the JSON) rather than value constraints.
  • Nullability from the declared type (string?, T?) is preserved.
  • No spurious MinLength=1 on non-nullable strings.
  • DataAnnotations [Required] semantics remain unchanged (still suppresses nullability and adds MinLength=1 to strings by default, matching its runtime behavior).

Observable client changes vs v14.7.0

For public required string[]? OptionList { get; init; } (#​5359):

TypeScript client C# client
v14.7.0 (broken) optionList: string[] public string[] OptionList
v14.7.1 optionList: string[] | null public string[]? OptionList

For full details and truth tables across all required / [Required] / [JsonRequired] / [JsonProperty(Required=*)] combinations, see the NJsonSchema v11.6.1 release notes and NJsonSchema #​1919.

What's Changed

Full Changelog: RicoSuter/NSwag@v14.7.0...v14.7.1

14.7.0

[!CAUTION]
Do not use this release — upgrade to v14.7.1 or later.

v14.7.0 bundles NJsonSchema v11.6.0, which contained a regression that silently dropped nullability on required T? / [JsonRequired] T? DTO properties. Generated TypeScript and C# clients lost null-safety for fields the server can legitimately return as null (#​5359). Fixed in v14.7.1.


What's Changed

NJsonSchema v11.6.0 (potentially breaking changes)

This release updates to NJsonSchema v11.6.0 and Namotion.Reflection v3.5.0, which include the following changes that may affect generated code:

  • C# 11 required keyword now correctly recognized: Properties using the C# 11 required keyword (via RequiredMemberAttribute / JsonRequiredAttribute) are now properly treated as required in the schema and generated code. Previously these were incorrectly treated as optional.
  • Removed extra blank line before class declarations in generated C# controller code (cosmetic).
  • New WriteAccessor setting to control property setter syntax (set vs init).
  • New JsonLibraryVersion setting for controlling enum attribute generation with System.Text.Json.
  • Fixed MinLength validation no longer incorrectly applied to DateTime properties.
  • Fixed nullable enum array detection for string enum converters.
  • Support for public fields with System.Text.Json when IncludeFields is enabled.

For the full list of changes, see the NJsonSchema v11.6.0 release notes.

New Contributors

Full Changelog: RicoSuter/NSwag@v14.6.3...v14.7.0

Commits viewable in compare view.

Updated Quartz from 3.15.1 to 3.18.1.

Release notes

Sourced from Quartz's releases.

3.18.1

Quartz.NET 3.18.1 is a maintenance release that addresses a timezone-related bug, security advisories on transitive dependencies, and an issue that prevented the new Redis distributed-lock package from publishing to nuget.org.

Highlights

  • Fix GetTimeBefore for positive-offset timezonesCronExpression.GetTimeBefore could throw ArgumentOutOfRangeException for cron expressions evaluated against timezones with positive UTC offsets (e.g. Europe/Helsinki, Asia/Tokyo). Backported from main.
  • Redis package renamed to Quartz.Extensions.Redis — the original Quartz.Redis package id from 3.18.0 collided with an unrelated v1.0.0 already on nuget.org and could not be published. The 3.18.0 release was shipped with IsPackable=false as a workaround; 3.18.1 picks the umbrella id Quartz.Extensions.Redis (matching Quartz.Extensions.DependencyInjection / Quartz.Extensions.Hosting) and re-enables publication. There are no consumers to migrate — the original id was never on nuget.org.
  • Vulnerable transitive dependency bumps — addresses moderate advisories that were blocking restore on the 3.x CI pipeline.

What's Changed

Full Changelog: quartznet/quartznet@v3.18.0...v3.18.1

3.18.0

Quartz.NET 3.18.0 is a major feature release with 8 new capabilities, performance improvements, and important bug fixes.

New Features

RFC 5545 RRULE recurrence trigger

Quartz.NET now supports scheduling with iCalendar recurrence rules (RFC 5545 RRULE), enabling complex patterns that cannot be expressed with cron expressions — such as "2nd Monday of every month" or "last weekday of March each year."

A custom lightweight RRULE engine (~1.5K LOC) handles all frequencies (YEARLY through SECONDLY), all BY* rules (BYDAY, BYMONTHDAY, BYSETPOS, etc.), COUNT, UNTIL, INTERVAL, and WKST. No new external dependencies. No database schema changes — uses the existing SIMPROP_TRIGGERS table.

ITrigger trigger = TriggerBuilder.Create()
    .WithIdentity("myTrigger")
    .WithRecurrenceSchedule("FREQ=MONTHLY;BYDAY=2MO", b => b
        .InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("America/New_York")))
    .StartNow()
    .Build();
RRULE Pattern
FREQ=MONTHLY;BYDAY=2MO Every 2nd Monday of the month
FREQ=WEEKLY;INTERVAL=2;BYDAY=MO,WE,FR Every other week on Mon/Wed/Fri
FREQ=YEARLY;BYMONTH=3;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1 Last weekday of March each year
FREQ=MONTHLY;BYMONTHDAY=-1 Last day of every month
FREQ=DAILY;BYDAY=MO,TU,WE,TH,FR Every weekday

(#​2990) — Closes #​1259

Execution groups for per-node thread limits

Tag triggers with an execution group to limit how many threads a category of jobs can consume concurrently on each node. This prevents resource-intensive jobs from starving lightweight work.

services.AddQuartz(q =>
{
    q.UseExecutionLimits(limits =>
    {
        limits.ForGroup("batch-jobs", maxConcurrent: 2);
        limits.ForDefaultGroup(maxConcurrent: 10);
        limits.ForOtherGroups(maxConcurrent: 5);
    });

    q.AddTrigger(t => t
        .ForJob("heavyJob")
        .WithExecutionGroup("batch-jobs")
        .WithCronSchedule("0 0/5 * * * ?"));
});

... (truncated)

3.17.1

Highlights

Jenkins-style H (hash) token for cron expressions

Quartz.NET now supports the H (hash) token in cron expressions, inspired by Jenkins. The H token resolves to a deterministic value based on the trigger's identity, spreading job execution times to avoid the thundering herd problem when many triggers share the same schedule.

Supported forms: H, H(min-max), H/step, H(min-max)/step

// Runs at a consistent but spread-out minute each hour
trigger = TriggerBuilder.Create()
    .WithIdentity("myTrigger", "myGroup")
    .WithCronSchedule("0 H * * * ?")
    .Build();

// Runs every 15 minutes, starting at a hash-determined offset
trigger = TriggerBuilder.Create()
    .WithIdentity("myTrigger", "myGroup")
    .WithCronSchedule("0 H/15 * * * ?")
    .Build();

The hash seed is automatically derived from the trigger's identity (name + group) when using TriggerBuilder, or can be provided explicitly. See the cron trigger documentation for full details.

Structured logging history plugins

New StructuredLoggingJobHistoryPlugin and StructuredLoggingTriggerHistoryPlugin provide first-class support for structured logging frameworks like Serilog and NLog. Unlike the existing logging plugins that use index-based format placeholders ({0}, {1}), these use named MEL-style message template parameters ({JobName}, {TriggerGroup}, etc.), making log output queryable in structured logging sinks and avoiding template cache memory leaks.

quartz.plugin.jobHistory.type = Quartz.Plugin.History.StructuredLoggingJobHistoryPlugin, Quartz.Plugins
quartz.plugin.triggerHistory.type = Quartz.Plugin.History.StructuredLoggingTriggerHistoryPlugin, Quartz.Plugins

Message templates are fully configurable via standard Quartz property configuration.

Bug Fixes

  • Fix triggers getting permanently stuck in ACQUIRED state — Triggers could become permanently stuck if the scheduler crashed or was killed between acquiring a trigger and firing it. (#​2980)
  • Fix StoreCalendar overriding paused trigger state — Storing a calendar with updateTriggers: true no longer resets paused triggers back to normal state. (#​2968)
  • Fix DoCheckin not retrying transient database errors — Cluster checkin now properly retries on transient database failures instead of silently failing. (#​2970)
  • Fix Dashboard /_blazor endpoint conflict — The Quartz Dashboard no longer conflicts with host applications that also use Blazor. (#​2975)
  • Fix spurious ERROR log on zombie transaction rollback — Rolling back a zombie transaction no longer logs a misleading ERROR. (#​2978)

Full Changelog: quartznet/quartznet@v3.17.0...v3.17.1

3.17.0

This is a major bug-fix release with 40+ fixes spanning trigger state management, clustering reliability, DST handling, misfire accuracy, and scheduler lifecycle. An optional database schema migration improves misfire handling.

Highlights

Optional database migration: MISFIRE_ORIG_FIRE_TIME column

A new optional column MISFIRE_ORIG_FIRE_TIME on QRTZ_TRIGGERS enables correct ScheduledFireTimeUtc for misfired triggers when using "fire now" misfire policies. Without it, ScheduledFireTimeUtc equals FireTimeUtc for misfired triggers (the pre-existing behavior). RAMJobStore does not require this migration.

Migration script: database/schema_30_add_misfire_orig_fire_time.sql (covers SQL Server, PostgreSQL, MySQL, SQLite, Oracle, Firebird)

Clustering and concurrency fixes

  • Fix DisallowConcurrentExecution jobs running simultaneously in cluster (#​2697)
  • Fix false cluster recovery causing DisallowConcurrentExecution violation (#​2915)
  • Fix triggers stuck in BLOCKED state for DisallowConcurrentExecution jobs (#​2822)
  • Fix FIRED_TRIGGERS not cleaned up on job deletion mid-execution (#​1696)
  • Handle transient database exceptions (deadlocks) with automatic retry (#​2883, #​2952)
  • Fix PostgreSQL transaction abort error on lock contention (#​2884)
  • Fix SQLite "database is locked" errors with dedicated semaphore (#​2323)
  • Add MySQL FORCE INDEX hints for slow trigger acquisition queries (#​547)

Trigger state and fire time accuracy

  • Fix GetTriggerState returning Complete instead of Blocked for executing triggers (#​2255)
  • Fix RAMJobStore.TriggersFired skipping triggers causing wrong trigger/job execution (#​1386)
  • Fix ScheduledFireTimeUtc returning wrong value after misfire (#​2899)
  • Fix PreviousFireTimeUtc reset to null on restart with OverWriteExistingData=true (#​1834)
  • Fix SimpleTrigger first fire time wrong when created long before scheduling (#​2455)
  • Fix CronTrigger double-firing when rescheduled with old StartTimeUtc (#​2909)
  • Fix recovery trigger missing original JobData (#​2083)
  • Fix misfired blocked triggers not being deleted from database (#​1646)
  • Fix DoNothing misfire policy skipping fire times within threshold (#​2912)

DST and time handling

  • Fix DailyTimeIntervalTrigger extra fire during DST fall-back (#​2917)
  • Fix DailyTimeIntervalTrigger mutating StartTimeUtc during fire time computation (#​2906)
  • Fix DailyTimeIntervalTrigger RepeatCount to apply per day (#​1633)
  • Fix scheduler thread stuck after system clock jumps backward (#​1508)
  • Fix ComputeFireTimesBetween modifying trigger StartTimeUtc (#​2722)

Scheduler lifecycle and threading

  • Fix scheduler hang on shutdown: replace Monitor.Wait with async SemaphoreSlim (#​2877)
  • Fix shutdown deadlock (#​2830)
  • Release acquired triggers on shutdown instead of leaking them (#​2881)
  • Fix DedicatedThreadPool threads leaking on scheduler shutdown (#​1357)
  • Use dedicated thread for scheduler loop to prevent missed triggers under high CPU (#​781)

Job execution

  • Fix RefireImmediately with JobChainingJobListener firing chain prematurely (#​663)
  • Fix AsyncLocal flow from IJobFactory.NewJob to IJob.Execute (#​1528)
  • Add IJobDetail property to JobExecutionException (#​1442)

... (truncated)

3.16.1

This release hopefully fixes the hiccup we had with the versioning/packaging of the new Dashboard package.

What's Changed

Full Changelog: quartznet/quartznet@v3.16.0...v3.16.1

3.16.0

On top of great community fixes, this release also brings the experimental Dashboard into action. You can enable it on NET 8 and later, see documentation for details.

What's Changed

Full Changelog: quartznet/quartznet@v3.15.1...v3.16.0

Commits viewable in compare view.

Updated Quartz.AspNetCore from 3.15.1 to 3.18.1.

Release notes

Sourced from Quartz.AspNetCore's releases.

3.18.1

Quartz.NET 3.18.1 is a maintenance release that addresses a timezone-related bug, security advisories on transitive dependencies, and an issue that prevented the new Redis distributed-lock package from publishing to nuget.org.

Highlights

  • Fix GetTimeBefore for positive-offset timezonesCronExpression.GetTimeBefore could throw ArgumentOutOfRangeException for cron expressions evaluated against timezones with positive UTC offsets (e.g. Europe/Helsinki, Asia/Tokyo). Backported from main.
  • Redis package renamed to Quartz.Extensions.Redis — the original Quartz.Redis package id from 3.18.0 collided with an unrelated v1.0.0 already on nuget.org and could not be published. The 3.18.0 release was shipped with IsPackable=false as a workaround; 3.18.1 picks the umbrella id Quartz.Extensions.Redis (matching Quartz.Extensions.DependencyInjection / Quartz.Extensions.Hosting) and re-enables publication. There are no consumers to migrate — the original id was never on nuget.org.
  • Vulnerable transitive dependency bumps — addresses moderate advisories that were blocking restore on the 3.x CI pipeline.

What's Changed

Full Changelog: quartznet/quartznet@v3.18.0...v3.18.1

3.18.0

Quartz.NET 3.18.0 is a major feature release with 8 new capabilities, performance improvements, and important bug fixes.

New Features

RFC 5545 RRULE recurrence trigger

Quartz.NET now supports scheduling with iCalendar recurrence rules (RFC 5545 RRULE), enabling complex patterns that cannot be expressed with cron expressions — such as "2nd Monday of every month" or "last weekday of March each year."

A custom lightweight RRULE engine (~1.5K LOC) handles all frequencies (YEARLY through SECONDLY), all BY* rules (BYDAY, BYMONTHDAY, BYSETPOS, etc.), COUNT, UNTIL, INTERVAL, and WKST. No new external dependencies. No database schema changes — uses the existing SIMPROP_TRIGGERS table.

ITrigger trigger = TriggerBuilder.Create()
    .WithIdentity("myTrigger")
    .WithRecurrenceSchedule("FREQ=MONTHLY;BYDAY=2MO", b => b
        .InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("America/New_York")))
    .StartNow()
    .Build();
RRULE Pattern
FREQ=MONTHLY;BYDAY=2MO Every 2nd Monday of the month
FREQ=WEEKLY;INTERVAL=2;BYDAY=MO,WE,FR Every other week on Mon/Wed/Fri
FREQ=YEARLY;BYMONTH=3;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1 Last weekday of March each year
FREQ=MONTHLY;BYMONTHDAY=-1 Last day of every month
FREQ=DAILY;BYDAY=MO,TU,WE,TH,FR Every weekday

(#​2990) — Closes #​1259

Execution groups for per-node thread limits

Tag triggers with an execution group to limit how many threads a category of jobs can consume concurrently on each node. This prevents resource-intensive jobs from starving lightweight work.

services.AddQuartz(q =>
{
    q.UseExecutionLimits(limits =>
    {
        limits.ForGroup("batch-jobs", maxConcurrent: 2);
        limits.ForDefaultGroup(maxConcurrent: 10);
        limits.ForOtherGroups(maxConcurrent: 5);
    });

    q.AddTrigger(t => t
        .ForJob("heavyJob")
        .WithExecutionGroup("batch-jobs")
        .WithCronSchedule("0 0/5 * * * ?"));
});

... (truncated)

3.17.1

Highlights

Jenkins-style H (hash) token for cron expressions

Quartz.NET now supports the H (hash) token in cron expressions, inspired by Jenkins. The H token resolves to a deterministic value based on the trigger's identity, spreading job execution times to avoid the thundering herd problem when many triggers share the same schedule.

Supported forms: H, H(min-max), H/step, H(min-max)/step

// Runs at a consistent but spread-out minute each hour
trigger = TriggerBuilder.Create()
    .WithIdentity("myTrigger", "myGroup")
    .WithCronSchedule("0 H * * * ?")
    .Build();

// Runs every 15 minutes, starting at a hash-determined offset
trigger = TriggerBuilder.Create()
    .WithIdentity("myTrigger", "myGroup")
    .WithCronSchedule("0 H/15 * * * ?")
    .Build();

The hash seed is automatically derived from the trigger's identity (name + group) when using TriggerBuilder, or can be provided explicitly. See the cron trigger documentation for full details.

Structured logging history plugins

New StructuredLoggingJobHistoryPlugin and StructuredLoggingTriggerHistoryPlugin provide first-class support for structured logging frameworks like Serilog and NLog. Unlike the existing logging plugins that use index-based format placeholders ({0}, {1}), these use named MEL-style message template parameters ({JobName}, {TriggerGroup}, etc.), making log output queryable in structured logging sinks and avoiding template cache memory leaks.

quartz.plugin.jobHistory.type = Quartz.Plugin.History.StructuredLoggingJobHistoryPlugin, Quartz.Plugins
quartz.plugin.triggerHistory.type = Quartz.Plugin.History.StructuredLoggingTriggerHistoryPlugin, Quartz.Plugins

Message templates are fully configurable via standard Quartz property configuration.

Bug Fixes

  • Fix triggers getting permanently stuck in ACQUIRED state — Triggers could become permanently stuck if the scheduler crashed or was killed between acquiring a trigger and firing it. (#​2980)
  • Fix StoreCalendar overriding paused trigger state — Storing a calendar with updateTriggers: true no longer resets paused triggers back to normal state. (#​2968)
  • Fix DoCheckin not retrying transient database errors — Cluster checkin now properly retries on transient database failures instead of silently failing. (#​2970)
  • Fix Dashboard /_blazor endpoint conflict — The Quartz Dashboard no longer conflicts with host applications that also use Blazor. (#​2975)
  • Fix spurious ERROR log on zombie transaction rollback — Rolling back a zombie transaction no longer logs a misleading ERROR. (#​2978)

Full Changelog: quartznet/quartznet@v3.17.0...v3.17.1

3.17.0

This is a major bug-fix release with 40+ fixes spanning trigger state management, clustering reliability, DST handling, misfire accuracy, and scheduler lifecycle. An optional database schema migration improves misfire handling.

Highlights

Optional database migration: MISFIRE_ORIG_FIRE_TIME column

A new optional column MISFIRE_ORIG_FIRE_TIME on QRTZ_TRIGGERS enables correct ScheduledFireTimeUtc for misfired triggers when using "fire now" misfire policies. Without it, ScheduledFireTimeUtc equals FireTimeUtc for misfired triggers (the pre-existing behavior). RAMJobStore does not require this migration.

Migration script: database/schema_30_add_misfire_orig_fire_time.sql (covers SQL Server, PostgreSQL, MySQL, SQLite, Oracle, Firebird)

Clustering and concurrency fixes

  • Fix DisallowConcurrentExecution jobs running simultaneously in cluster (#​2697)
  • Fix false cluster recovery causing DisallowConcurrentExecution violation (#​2915)
  • Fix triggers stuck in BLOCKED state for DisallowConcurrentExecution jobs (#​2822)
  • Fix FIRED_TRIGGERS not cleaned up on job deletion mid-execution (#​1696)
  • Handle transient database exceptions (deadlocks) with automatic retry (#​2883, #​2952)
  • Fix PostgreSQL transaction abort error on lock contention (#​2884)
  • Fix SQLite "database is locked" errors with dedicated semaphore (#​2323)
  • Add MySQL FORCE INDEX hints for slow trigger acquisition queries (#​547)

Trigger state and fire time accuracy

  • Fix GetTriggerState returning Complete instead of Blocked for executing triggers (#​2255)
  • Fix RAMJobStore.TriggersFired skipping triggers causing wrong trigger/job execution (#​1386)
  • Fix ScheduledFireTimeUtc returning wrong value after misfire (#​2899)
  • Fix PreviousFireTimeUtc reset to null on restart with OverWriteExistingData=true (#​1834)
  • Fix SimpleTrigger first fire time wrong when created long before scheduling (#​2455)
  • Fix CronTrigger double-firing when rescheduled with old StartTimeUtc (#​2909)
  • Fix recovery trigger missing original JobData (#​2083)
  • Fix misfired blocked triggers not being deleted from database (#​1646)
  • Fix DoNothing misfire policy skipping fire times within threshold (#​2912)

DST and time handling

  • Fix DailyTimeIntervalTrigger extra fire during DST fall-back (#​2917)
  • Fix DailyTimeIntervalTrigger mutating StartTimeUtc during fire time computation (#​2906)
  • Fix DailyTimeIntervalTrigger RepeatCount to apply per day (#​1633)
  • Fix scheduler thread stuck after system clock jumps backward (#​1508)
  • Fix ComputeFireTimesBetween modifying trigger StartTimeUtc (#​2722)

Scheduler lifecycle and threading

  • Fix scheduler hang on shutdown: replace Monitor.Wait with async SemaphoreSlim (#​2877)
  • Fix shutdown deadlock (#​2830)
  • Release acquired triggers on shutdown instead of leaking them (#​2881)
  • Fix DedicatedThreadPool threads leaking on scheduler shutdown (#​1357)
  • Use dedicated thread for scheduler loop to prevent missed triggers under high CPU (#​781)

Job execution

  • Fix RefireImmediately with JobChainingJobListener firing chain prematurely (#​663)
  • Fix AsyncLocal flow from IJobFactory.NewJob to IJob.Execute (#​1528)
  • Add IJobDetail property to JobExecutionException (#​1442)

... (truncated)

3.16.1

This release hopefully fixes the hiccup we had with the versioning/packaging of the new Dashboard package.

What's Changed

Full Changelog: quartznet/quartznet@v3.16.0...v3.16.1

3.16.0

On top of great community fixes, this release also brings the experimental Dashboard into action. You can enable it on NET 8 and later, see documentation for details.

What's Changed

Full Changelog: quartznet/quartznet@v3.15.1...v3.16.0

Commits viewable in compare view.

Updated Scalar.AspNetCore from 2.12.37 to 2.16.3.

Release notes

Sourced from Scalar.AspNetCore's releases.

No release notes found for this version range.

Commits viewable in compare view.

Updated SkiaSharp from 3.119.2 to 3.119.4.

Updated SkiaSharp.NativeAssets.Linux.NoDependencies from 3.119.2 to 3.119.4.

Updated SkiaSharp.NativeAssets.macOS from 3.119.2 to 3.119.4.

Updated SkiaSharp.NativeAssets.Win32 from 3.119.2 to 3.119.4.

Updated Spectre.Console from 0.54.0 to 0.57.0.

Release notes

Sourced from Spectre.Console's releases.

0.57.0

What's Changed

Full Changelog: spectreconsole/spectre.console@0.56.0...0.57.0

0.56.0

What's Changed

New Contributors

Full Changelog: spectreconsole/spectre.console@0.55.2...0.56.0

0.55.2

What's Changed

New Contributors

Full Changelog: spectreconsole/spectre.console@0.55.1...0.55.2

0.55.1

What's Changed

New Contributors

Full Changelog: spectreconsole/spectre.console@0.55.0...0.55.1

0.55.0

This release brings new features, performance improvements, bug fixes, and some important architectural changes.

[!CAUTION]
There are breaking changes in this release, so make sure you review the release notes and try things out before upgrading in production.

New Spectre.Console.Ansi Library

One of the biggest changes in this release is the introduction of
Spectre.Console.Ansi,
a new standalone library for writing ANSI escape
sequences to the terminal without taking a full dependency on Spectre.Console.

This makes it easy to add ANSI support to lightweight tools and libraries where
pulling in the full Spectre.Console package would be overkill. Spectre.Console
itself now depends on this library internally.

We've also added some nice convenience methods for the .NET Console class:

using Spectre.Console.Ansi;

Console.Markup("[yellow]Hello[/] ");
Console.MarkupLine("[blue]World[/]");
  
Console.Ansi(writer => writer
    .BeginLink("https://spectreconsole.net", linkId: 123)
    .Decoration(Decoration.Bold | Decoration.Italic)
    .Foreground(Color.Yellow)
    .Write("Spectre Console")
    .ResetStyle()
    .EndLink());

Style Is Now a Struct

Style has been converted from a class to a struct, and link/URL information
has been extracted into a separate Link type. This improves allocation
performance, especially in rendering-heavy scenarios, but is a breaking change
for code that relies on reference semantics.

Progress Improvements

The Progress widget received a lot of love in this release. It now uses
TimeProvider instead of the wall clock, making it significantly easier to
write deterministic tests. ProgressTask has a new Tag property for attaching
arbitrary metadata, and you can now override the global hide-when-completed
behavior on individual tasks. Tasks can also be removed from the progress
context entirely.

Speed calculations have been improved with configurable max sampling age and
... (truncated)

Commits viewable in compare view.

Updated StackExchange.Redis from 2.11.8 to 2.12.14.

Release notes

Sourced from StackExchange.Redis's releases.

No release notes found for this version range.

Commits viewable in compare view.

Updated StackExchange.Redis from 2.11.8 to 2.13.17.

Release notes

Sourced from StackExchange.Redis's releases.

No release notes found for this version range.

Commits viewable in compare view.

Updated Swashbuckle.AspNetCore from 10.1.4 to 10.2.1.

Release notes

Sourced from Swashbuckle.AspNetCore's releases.

10.2.1

What's Changed

Full Changelog: domaindrivendev/Swashbuckle.AspNetCore@v10.2.0...v10.2.1

10.2.0

What's Changed

New Contributors

Full Changelog: domaindrivendev/Swashbuckle.AspNetCore@v10.1.7...v10.2.0

10.1.7

What's Changed

New Contributors

Full Changelog: domaindrivendev/Swashbuckle.AspNetCore@v10.1.6...v10.1.7

10.1.6

What's Changed

New Contributors

Full Changelog: domaindrivendev/Swashbuckle.AspNetCore@v10.1.5...v10.1.6

10.1.5

What's Changed

Full Changelog: domaindrivendev/Swashbuckle.AspNetCore@v10.1.4...v10.1.5

Commits viewable in compare view.

Updated Swashbuckle.AspNetCore.Annotations from 10.1.4 to 10.2.1.

Release notes

Sourced from Swashbuckle.AspNetCore.Annotations's releases.

10.2.1

What's Changed

Full Changelog: domaindrivendev/Swashbuckle.AspNetCore@v10.2.0...v10.2.1

10.2.0

What's Changed

New Contributors

Full Changelog: domaindrivendev/Swashbuckle.AspNetCore@v10.1.7...v10.2.0

10.1.7

What's Changed

New Contributors

Full Changelog: domaindrivendev/Swashbuckle.AspNetCore@v10.1.6...v10.1.7

10.1.6

What's Changed

New Contributors

Full Changelog: domaindrivendev/Swashbuckle.AspNetCore@v10.1.5...v10.1.6

10.1.5

What's Changed

Full Changelog: domaindrivendev/Swashbuckle.AspNetCore@v10.1.4...v10.1.5

Commits viewable in compare view.

Updated Telegram.Bot from 22.9.0 to 22.10.1.

Release notes

Sourced from Telegram.Bot's releases.

No release notes found for this version range.

Commits viewable in compare view.

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
  • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
  • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
  • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
  • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions

Bumps Injectio from 5.1.0 to 6.1.0
Bumps Microsoft.AspNetCore.OpenApi from 10.0.3 to 10.0.9
Bumps Microsoft.CodeAnalysis.Analyzers from 3.11.0 to 5.3.0
Bumps Microsoft.CodeAnalysis.Common from 5.0.0 to 5.3.0
Bumps Microsoft.CodeAnalysis.CSharp from 5.0.0 to 5.3.0
Bumps Microsoft.CodeAnalysis.ResxSourceGenerator from 3.11.0-beta1.24527.2 to 3.11.0-beta1.26226.5
Bumps Microsoft.Extensions.Hosting.Abstractions from 10.0.3 to 10.0.9
Bumps Microsoft.Extensions.Http from 10.0.3 to 10.0.9
Bumps Microsoft.Extensions.Logging from 10.0.3 to 10.0.9
Bumps NLog from 6.1.0 to 6.1.3
Bumps NLog.Extensions.Logging from 6.1.1 to 6.1.3
Bumps NLog.Web.AspNetCore from 6.1.1 to 6.1.3
Bumps NRedisStack from 1.3.0 to 1.5.0
Bumps NSwag.AspNetCore from 14.6.3 to 14.7.1
Bumps Quartz from 3.15.1 to 3.18.1
Bumps Quartz.AspNetCore from 3.15.1 to 3.18.1
Bumps Scalar.AspNetCore from 2.12.37 to 2.16.3
Bumps SkiaSharp from 3.119.2 to 3.119.4
Bumps SkiaSharp.NativeAssets.Linux.NoDependencies from 3.119.2 to 3.119.4
Bumps SkiaSharp.NativeAssets.macOS from 3.119.2 to 3.119.4
Bumps SkiaSharp.NativeAssets.Win32 from 3.119.2 to 3.119.4
Bumps Spectre.Console from 0.54.0 to 0.57.0
Bumps StackExchange.Redis to 2.12.14, 2.13.17
Bumps Swashbuckle.AspNetCore from 10.1.4 to 10.2.1
Bumps Swashbuckle.AspNetCore.Annotations from 10.1.4 to 10.2.1
Bumps Telegram.Bot from 22.9.0 to 22.10.1

---
updated-dependencies:
- dependency-name: Injectio
  dependency-version: 6.1.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: nuget-dependencies
- dependency-name: Microsoft.AspNetCore.OpenApi
  dependency-version: 10.0.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: nuget-dependencies
- dependency-name: Microsoft.CodeAnalysis.Analyzers
  dependency-version: 5.3.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: nuget-dependencies
- dependency-name: Microsoft.CodeAnalysis.Common
  dependency-version: 5.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: nuget-dependencies
- dependency-name: Microsoft.CodeAnalysis.CSharp
  dependency-version: 5.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: nuget-dependencies
- dependency-name: Microsoft.CodeAnalysis.ResxSourceGenerator
  dependency-version: 3.11.0-beta1.26226.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: nuget-dependencies
- dependency-name: Microsoft.Extensions.Hosting.Abstractions
  dependency-version: 10.0.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: nuget-dependencies
- dependency-name: Microsoft.Extensions.Http
  dependency-version: 10.0.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: nuget-dependencies
- dependency-name: Microsoft.Extensions.Logging
  dependency-version: 10.0.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: nuget-dependencies
- dependency-name: NLog
  dependency-version: 6.1.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: nuget-dependencies
- dependency-name: NLog.Extensions.Logging
  dependency-version: 6.1.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: nuget-dependencies
- dependency-name: NLog.Web.AspNetCore
  dependency-version: 6.1.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: nuget-dependencies
- dependency-name: NRedisStack
  dependency-version: 1.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: nuget-dependencies
- dependency-name: StackExchange.Redis
  dependency-version: 2.12.14
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: nuget-dependencies
- dependency-name: NSwag.AspNetCore
  dependency-version: 14.7.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: nuget-dependencies
- dependency-name: Quartz
  dependency-version: 3.18.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: nuget-dependencies
- dependency-name: Quartz.AspNetCore
  dependency-version: 3.18.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: nuget-dependencies
- dependency-name: Scalar.AspNetCore
  dependency-version: 2.16.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: nuget-dependencies
- dependency-name: SkiaSharp
  dependency-version: 3.119.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: nuget-dependencies
- dependency-name: SkiaSharp.NativeAssets.macOS
  dependency-version: 3.119.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: nuget-dependencies
- dependency-name: SkiaSharp.NativeAssets.Win32
  dependency-version: 3.119.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: nuget-dependencies
- dependency-name: SkiaSharp.NativeAssets.Linux.NoDependencies
  dependency-version: 3.119.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: nuget-dependencies
- dependency-name: Spectre.Console
  dependency-version: 0.57.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: nuget-dependencies
- dependency-name: StackExchange.Redis
  dependency-version: 2.13.17
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: nuget-dependencies
- dependency-name: Swashbuckle.AspNetCore
  dependency-version: 10.2.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: nuget-dependencies
- dependency-name: Swashbuckle.AspNetCore.Annotations
  dependency-version: 10.2.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: nuget-dependencies
- dependency-name: Telegram.Bot
  dependency-version: 22.10.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: nuget-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added .NET Pull requests that update .NET code dependencies Pull requests that update a dependency file labels Jun 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file .NET Pull requests that update .NET code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Nullable required fields are marked as not null in typescript & C#

0 participants