microsoft-extensions-configuration

Apply the Options pattern and startup validation to bind and validate configuration sections in ASP.NET Core.

3|Updated Jan 24, 2024
One-click install
npx skills add https://github.com/akoken/dotfiles --skill microsoft-extensions-configuration-akoken
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: microsoft-extensions-configuration
Source: https://github.com/akoken/dotfiles/tree/main/config/.copilot/skills/microsoft-extensions-configuration
Command: npx skills add https://github.com/akoken/dotfiles --skill microsoft-extensions-configuration-akoken

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

This Skill helps .NET developers ensure configuration correctness by applying the Options pattern and startup validation, reducing runtime misconfigurations and hard-to-trace failures.

Core Features & Use Cases

  • Strongly-typed settings binding: map configuration sections to POCOs to enable compile-time checks and refactor safety.
  • Fail-fast startup validation: enforce correctness via ValidateOnStart, Data Annotations, and IValidateOptions to catch issues early.
  • Flexible validation patterns: use Data Annotations for simple rules and IValidateOptions for complex, cross-property validation; support for named options, PostConfigure, and DI-based validators.
  • Real-world scenarios: ASP.NET Core apps, background services, and CLI apps that rely on robust configuration to start correctly.

Quick Start

  • Define a POCO for your settings and annotate with Data Annotations if needed.
  • Register in DI: services.AddOptions<YourSettings>().BindConfiguration("YourSection").ValidateDataAnnotations().ValidateOnStart();
  • For complex validation, create a class implementing IValidateOptions<YourSettings> and register it.

Frequently Asked Questions about microsoft-extensions-configuration

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I validate .NET configuration at startup to prevent runtime failures?

To validate .NET configuration at startup, register your settings using services.AddOptions<T>().BindConfiguration().ValidateDataAnnotations().ValidateOnStart(). This binds configuration sections to strongly-typed classes and enforces fail-fast validation rules immediately.

What is the difference between Data Annotations and IValidateOptions in ASP.NET Core?

Data Annotations handle simple property-level validation rules, while IValidateOptions handles complex, cross-property validation logic. You can use both together to enforce comprehensive configuration correctness in ASP.NET Core and similar apps.

How do I bind a configuration section to a strongly-typed class in .NET?

To bind a configuration section to a strongly-typed class, define a POCO for your settings and register it via Dependency Injection using services.AddOptions<YourSettings>().BindConfiguration("YourSection"). This enables compile-time checks and refactor safety.

Can I use named options with PostConfigure in .NET dependency injection?

Yes, named options work with PostConfigure in .NET dependency injection. This allows you to apply post-configuration logic to specific named option instances, integrating seamlessly with IOptionsMonitor and IOptionsSnapshot lifetimes.

Does the Options pattern support complex cross-property validation for background services?

Yes, the Options pattern supports complex cross-property validation for background services through IValidateOptions<T>. By implementing this interface and registering it via dependency injection, you ensure robust configuration correctness across various application types.