Skip to content

Bump Microsoft.Extensions.Options from 10.0.0 to 10.0.9#53

Closed
dependabot[bot] wants to merge 33 commits into
mainfrom
dependabot/nuget/src/PluginEngine/Microsoft.Extensions.Options-10.0.9
Closed

Bump Microsoft.Extensions.Options from 10.0.0 to 10.0.9#53
dependabot[bot] wants to merge 33 commits into
mainfrom
dependabot/nuget/src/PluginEngine/Microsoft.Extensions.Options-10.0.9

Conversation

@dependabot

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

Copy link
Copy Markdown

Updated Microsoft.Extensions.Options from 10.0.0 to 10.0.9.

Release notes

Sourced from Microsoft.Extensions.Options's releases.

No release notes found for this version range.

Commits viewable in compare view.

Dependabot compatibility score

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 this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

…he (#37)

Using Interlocked.Increment/Read instead of lock(_statsLock) removes
unnecessary contention on the hot path. Cache hit/miss counters are
simple atomic increments that don't need mutual exclusion with other
state.
- Add <summary>, <param>, and <returns> tags to all 10 lifecycle methods
- Document initialization order, dependency resolution, and shutdown semantics
- Describe plugin activation/deactivation hooks and resource cleanup
Add XML doc comments to IPluginManagerService
Comprehensive documentation covering:
- How to declare plugin dependencies with version bounds and optionality
- Resolving the transitive dependency closure at runtime
- Detecting circular dependencies
- Visualising dependency graphs
- Caching behaviour and how to invalidate it
- Configuration reference and troubleshooting tips

closes #39
Comprehensive documentation covering:
- Setting up and configuring the marketplace client
- Searching the marketplace with filter/sort options
- Installing plugins and verifying compatibility
- The compatibility matrix and how status is determined
- Step-by-step publishing workflow (metadata, archive, registry API)
- Best practices for versioning, tagging, and changelogs
- Troubleshooting common errors (404, 502, unknown compatibility, key rejection)

closes #40
The IPluginLifecycle interface (OnBeforeLoadAsync, OnAfterLoadAsync,
OnBeforeUnloadAsync, OnAfterUnloadAsync) and its invocation from
PluginLoaderService were already in place. This commit adds a dedicated
test suite that:

- Confirms all four hook methods exist on the interface
- Verifies all hooks return Task (so they can be awaited)
- Validates that hooks fire in the correct order during load and unload
- Confirms that CancellationToken is accepted by every hook
- Documents that the interface is opt-in (plugins not implementing it
  skip hooks automatically, as the loader uses reflection to discover
  implementors)

closes #41
- Make plugin metadata optional in PluginValidator (was requiring it for
  all plugins, breaking basic validation tests)
- Add author validation when metadata is provided
- Add maximum version < minimum version validation for dependencies
- Update dependency error messages to include 'minimum version'
- Fix DependencyResolutionService tests to mock GetAllLoadedPluginsAsync
  (implementation uses this, not GetLoadedPluginAsync)
- Fix ClearDependencyCacheAsync test assertion to use NotBeSameAs
- Fix Plugin.AddDependency dedup check to use DependencyPluginId instead
  of PluginId (bug prevented adding multiple dependencies)
- Fix chained dependency test to expect transitive resolution (2 items)
- IMarketplaceBrowserService interface with GetCategoriesAsync,
  GetTrendingAsync, GetFeaturedAsync, BrowseCategoryAsync, GetHomePageAsync
- MarketplaceBrowserService implementation with multi-level caching
  (categories 6h, trending 15m, featured 1h, home page 10m)
- 8 built-in plugin categories (analytics, auth, caching, database,
  logging, messaging, security, ui)
- Registered via AddPluginMarketplace() alongside existing marketplace service
- CLI: marketplace --action search|info|install with --query, --id,
  --version, --target, --limit flags
- 7 unit tests covering categories, trending, featured, browse, home page
Sarmkadan and others added 3 commits April 16, 2026 12:48
- IHotSwapService interface: SwapPluginAsync, RollbackSwapAsync,
  GetLastSwapRecordAsync, GetSwapHistoryAsync, RegisterPostSwapCallback,
  CanSwap
- HotSwapService implementation: unloads old ALC, loads new assembly in a
  fresh context, best-effort rollback on failure, per-plugin swap history
  capped at 50 entries, post-swap callbacks
- SwapRecord immutable model with PreviousAssemblyPath, NewAssemblyPath,
  Duration, RolledBack flag
- Registered as IHotSwapService singleton in AddPluginEngine()
- CLI: swap --id <guid> --path <new-assembly-path>
- 15 unit tests covering CanSwap states, success/failure paths,
  rollback, history, and callback lifecycle
- IPluginDependencyResolver interface: GetInstallOrderAsync,
  FindConflictsAsync, BuildResolutionPlanAsync
- PluginDependencyResolver implementation using Kahn's topological sort
  for install ordering; pairwise min/max constraint intersection for
  conflict detection; transitive closure for resolution plans
- DependencyConflict, ConflictingRequirement, DependencyResolutionPlan,
  ResolutionStep, ResolutionAction models
- ResolutionPlan.IsExecutable = true only when zero conflicts detected
- Registered as IPluginDependencyResolver singleton in AddPluginEngine()
- CLI: resolve --id <guid> prints ordered steps and any conflicts
- 9 unit tests covering linear chains, diamond graphs, circular deps,
  conflict detection, and full resolution plan generation
---
updated-dependencies:
- dependency-name: Microsoft.Extensions.Options
  dependency-version: 10.0.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

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 15, 2026
@Sarmkadan Sarmkadan closed this Jul 11, 2026
@dependabot @github

dependabot Bot commented on behalf of github Jul 11, 2026

Copy link
Copy Markdown
Author

OK, I won't notify you again about this release, but will get in touch when a new version is available. If you'd rather skip all updates until the next major or minor version, let me know by commenting @dependabot ignore this major version or @dependabot ignore this minor version. You can also ignore all major, minor, or patch releases for a dependency by adding an ignore condition with the desired update_types to your config file.

If you change your mind, just re-open this PR and I'll resolve any conflicts on it.

@dependabot dependabot Bot deleted the dependabot/nuget/src/PluginEngine/Microsoft.Extensions.Options-10.0.9 branch July 11, 2026 07:01
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.

1 participant