Microsoft.Extensions.Options
                              
                            
                                10.0.0-preview.5.25277.101
                            
                        
                            
                                
                                
                                    Prefix Reserved
                                
                            
                    See the version list below for details.
dotnet add package Microsoft.Extensions.Options --version 10.0.0-preview.5.25277.101
NuGet\Install-Package Microsoft.Extensions.Options -Version 10.0.0-preview.5.25277.101
<PackageReference Include="Microsoft.Extensions.Options" Version="10.0.0-preview.5.25277.101" />
<PackageVersion Include="Microsoft.Extensions.Options" Version="10.0.0-preview.5.25277.101" />
<PackageReference Include="Microsoft.Extensions.Options" />
paket add Microsoft.Extensions.Options --version 10.0.0-preview.5.25277.101
#r "nuget: Microsoft.Extensions.Options, 10.0.0-preview.5.25277.101"
#:package Microsoft.Extensions.Options@10.0.0-preview.5.25277.101
#addin nuget:?package=Microsoft.Extensions.Options&version=10.0.0-preview.5.25277.101&prerelease
#tool nuget:?package=Microsoft.Extensions.Options&version=10.0.0-preview.5.25277.101&prerelease
About
Microsoft.Extensions.Options provides a strongly typed way of specifying and accessing settings using dependency injection and acts as a bridge between configuration, DI, and higher level libraries. This library is the glue for how an app developer uses DI to configure the behavior of a library like HttpClient Factory. This also enables user to get a strongly-typed view of their configuration.
Within this package, you'll find an options validation source generator that generates exceptionally efficient and optimized code for validating options.
Key Features
- Offer the IValidateOptions interface for the validation of options, along with several generic ValidateOptions classes that implement this interface.
- OptionsBuilder to configure options.
- Provide extension methods for service collections and options builder to register options and validate options.
- Supply a set of generic ConfigureNamedOptions classes that implement the IConfigureNamedOptions interface for configuring named options.
- Provide a source generator that generates validation code for options.
- Options caching, managing and monitoring.
How to Use
Options validation example
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllersWithViews();
// Load the configuration and validate it
builder.Services.AddOptions<MyConfigOptions>()
            .Bind(builder.Configuration.GetSection(MyConfigOptions.MyConfig))
            .ValidateDataAnnotations();
var app = builder.Build();
// Declare the option class to validate
public class MyConfigOptions
{
    public const string MyConfig = "MyConfig";
    [RegularExpression(@"^[a-zA-Z''-'\s]{1,40}$")]
    public string Key1 { get; set; }
    [Range(0, 1000,
        ErrorMessage = "Value for {0} must be between {1} and {2}.")]
    public int Key2 { get; set; }
    public int Key3 { get; set; }
}
Using IValidateOptions to validate options
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllersWithViews();
// Configuration to validate
builder.Services.Configure<MyConfigOptions>(builder.Configuration.GetSection(
                                        MyConfigOptions.MyConfig));
// OPtions validation through the DI container
builder.Services.AddSingleton<IValidateOptions
                              <MyConfigOptions>, MyConfigValidation>();
var app = builder.Build();
public class MyConfigValidation : IValidateOptions<MyConfigOptions>
{
    public MyConfigOptions _config { get; private set; }
    public  MyConfigValidation(IConfiguration config)
    {
        _config = config.GetSection(MyConfigOptions.MyConfig)
            .Get<MyConfigOptions>();
    }
    public ValidateOptionsResult Validate(string name, MyConfigOptions options)
    {
        string? vor = null;
        var rx = new Regex(@"^[a-zA-Z''-'\s]{1,40}$");
        var match = rx.Match(options.Key1!);
        if (string.IsNullOrEmpty(match.Value))
        {
            vor = $"{options.Key1} doesn't match RegEx \n";
        }
        if ( options.Key2 < 0 || options.Key2 > 1000)
        {
            vor = $"{options.Key2} doesn't match Range 0 - 1000 \n";
        }
        if (_config.Key2 != default)
        {
            if(_config.Key3 <= _config.Key2)
            {
                vor +=  "Key3 must be > than Key2.";
            }
        }
        if (vor != null)
        {
            return ValidateOptionsResult.Fail(vor);
        }
        return ValidateOptionsResult.Success;
    }
}
Options Validation Source Generator Example
using System;
using System.ComponentModel.DataAnnotations;
using Microsoft.Extensions.Options;
public class MyConfigOptions
{
    [RegularExpression(@"^[a-zA-Z''-'\s]{1,40}$")]
    public string Key1 { get; set; }
    [Range(0, 1000,
        ErrorMessage = "Value for {0} must be between {1} and {2}.")]
    public int Key2 { get; set; }
    public int Key3 { get; set; }
}
[OptionsValidator]
public partial class MyConfigValidation : IValidateOptions<MyConfigOptions>
{
    // Source generator will automatically provide the implementation of IValidateOptions
    // Then you can add the validation to the DI Container using the following code:
    //
    // builder.Services.AddSingleton<IValidateOptions
    //                          <MyConfigOptions>, MyConfigValidation>();
    // builder.Services.AddOptions<MyConfigOptions>()
    //        .Bind(builder.Configuration.GetSection(MyConfigOptions.MyConfig))
    //        .ValidateDataAnnotations();
}
Main Types
The main types provided by this library are:
- IOptions,- IOptionsFactory, and- IOptionsMonitor
- IValidateOptionsand- ValidateOptions
- OptionsBuilder,- OptionsFactory,- OptionsMonitor, and- OptionsManager
- OptionsServiceCollectionExtensions
- OptionsValidatorAttribute
Additional Documentation
Related Packages
Microsoft.Extensions.Logging Microsoft.Extensions.Configuration
Feedback & Contributing
Microsoft.Extensions.Options is released as open source under the MIT license. Bug reports and contributions are welcome at the GitHub repository.
| Product | Versions Compatible and additional computed target framework versions. | 
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. | 
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. | 
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. | 
| .NET Framework | net461 was computed. net462 is compatible. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. | 
| MonoAndroid | monoandroid was computed. | 
| MonoMac | monomac was computed. | 
| MonoTouch | monotouch was computed. | 
| Tizen | tizen40 was computed. tizen60 was computed. | 
| Xamarin.iOS | xamarinios was computed. | 
| Xamarin.Mac | xamarinmac was computed. | 
| Xamarin.TVOS | xamarintvos was computed. | 
| Xamarin.WatchOS | xamarinwatchos was computed. | 
- 
                                                    .NETFramework 4.6.2- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.0-preview.5.25277.101)
- Microsoft.Extensions.Primitives (>= 10.0.0-preview.5.25277.101)
- System.ValueTuple (>= 4.6.1)
 
- 
                                                    .NETStandard 2.0- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.0-preview.5.25277.101)
- Microsoft.Extensions.Primitives (>= 10.0.0-preview.5.25277.101)
- System.ComponentModel.Annotations (>= 5.0.0)
 
- 
                                                    .NETStandard 2.1- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.0-preview.5.25277.101)
- Microsoft.Extensions.Primitives (>= 10.0.0-preview.5.25277.101)
- System.ComponentModel.Annotations (>= 5.0.0)
 
- 
                                                    net10.0- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.0-preview.5.25277.101)
- Microsoft.Extensions.Primitives (>= 10.0.0-preview.5.25277.101)
 
- 
                                                    net8.0- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.0-preview.5.25277.101)
- Microsoft.Extensions.Primitives (>= 10.0.0-preview.5.25277.101)
 
- 
                                                    net9.0- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.0-preview.5.25277.101)
- Microsoft.Extensions.Primitives (>= 10.0.0-preview.5.25277.101)
 
GitHub repositories (426)
Showing the top 20 popular GitHub repositories that depend on Microsoft.Extensions.Options:
| Repository | Stars | 
|---|---|
| jellyfin/jellyfin 
                                                            The Free Software Media System - Server Backend & API
                                                         | |
| dotnet/roslyn 
                                                            The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs.
                                                         | |
| App-vNext/Polly 
                                                            Polly is a .NET resilience and transient-fault-handling library that allows developers to express policies such as Retry, Circuit Breaker, Timeout, Bulkhead Isolation, and Fallback in a fluent and thread-safe manner. From version 6.0.1, Polly targets .NET Standard 1.1 and 2.0+.
                                                         | |
| abpframework/abp 
                                                            Open-source web application framework for ASP.NET Core! Offers an opinionated architecture to build enterprise software solutions with best practices on top of the .NET. Provides the fundamental infrastructure, cross-cutting-concern implementations, startup templates, application modules, UI themes, tooling and documentation.
                                                         | |
| dotnet/AspNetCore.Docs 
                                                            Documentation for ASP.NET Core
                                                         | |
| aspnetboilerplate/aspnetboilerplate 
                                                            ASP.NET Boilerplate - Web Application Framework
                                                         | |
| chocolatey/choco 
                                                            Chocolatey - the package manager for Windows
                                                         | |
| dotnet/orleans 
                                                            Cloud Native application framework for .NET
                                                         | |
| LuckyPennySoftware/AutoMapper 
                                                            A convention-based object-object mapper in .NET. 
                                                         | |
| dotnet/eShop 
                                                            A reference .NET application implementing an eCommerce site
                                                         | |
| JeffreySu/WeiXinMPSDK 
                                                            微信全平台 .NET SDK, Senparc.Weixin for C#,支持 .NET Framework 及 .NET Core、.NET 8.0。已支持微信公众号、小程序、小游戏、微信支付、企业微信/企业号、开放平台、JSSDK、微信周边等全平台。 WeChat SDK for C#.
                                                         | |
| RayWangQvQ/BiliBiliToolPro 
                                                            B 站(bilibili)自动任务工具,支持docker、青龙、k8s等多种部署方式。敏感肌也能用。
                                                         | |
| microsoft/ailab 
                                                            Experience, Learn and Code the latest breakthrough innovations with Microsoft AI
                                                         | |
| MassTransit/MassTransit 
                                                            Distributed Application Framework for .NET
                                                         | |
| elsa-workflows/elsa-core 
                                                            A .NET workflows library
                                                         | |
| dotnetcore/CAP 
                                                            Distributed transaction solution in micro-service base on eventually consistency, also an eventbus with Outbox pattern
                                                         | |
| quartznet/quartznet 
                                                            Quartz Enterprise Scheduler .NET
                                                         | |
| ant-design-blazor/ant-design-blazor 
                                                            🌈A rich set of enterprise-class UI components based on Ant Design and Blazor.
                                                         | |
| graphql-dotnet/graphql-dotnet 
                                                            GraphQL for .NET
                                                         | |
| Azure/azure-sdk-for-net 
                                                            This repository is for active development of the Azure SDK for .NET. For consumers of the SDK we recommend visiting our public developer docs at https://learn.microsoft.com/dotnet/azure/ or our versioned developer docs at https://azure.github.io/azure-sdk-for-net. 
                                                         | 
| Version | Downloads | Last Updated | 
|---|---|---|
| 10.0.0-rc.2.25466.103 | 0 | 9/22/2025 | 
| 10.0.0-rc.1.25451.107 | 0 | 9/22/2025 | 
| 10.0.0-rc.1.25421.113 | 0 | 8/28/2025 | 
| 10.0.0-preview.7.25380.108 | 0 | 8/11/2025 | 
| 10.0.0-preview.7.25380.105 | 0 | 8/6/2025 | 
| 10.0.0-preview.6.25358.103 | 0 | 7/17/2025 | 
| 10.0.0-preview.6.25321.102 | 0 | 6/25/2025 | 
| 10.0.0-preview.5.25280.105 | 0 | 6/2/2025 | 
| 10.0.0-preview.5.25277.114 | 0 | 6/3/2025 | 
| 10.0.0-preview.5.25277.101 | 0 | 5/29/2025 | 
| 10.0.0-preview.5.25266.103 | 0 | 5/20/2025 | 
| 10.0.0-preview.4.25255.103 | 0 | 5/12/2025 | 
| 9.0.10 | 2 | 9/23/2025 | 
| 9.0.7 | 23 | 7/11/2025 | 
| 3.0.0-preview.19074.2 | 6 | 1/28/2019 | 
| 3.0.0-preview.18572.1 | 2 | 11/30/2018 |