Microsoft.Extensions.Options.ConfigurationExtensions 9.0.0-preview.1.24080.9

Prefix Reserved
This is a prerelease version of Microsoft.Extensions.Options.ConfigurationExtensions.
There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package Microsoft.Extensions.Options.ConfigurationExtensions --version 9.0.0-preview.1.24080.9                
NuGet\Install-Package Microsoft.Extensions.Options.ConfigurationExtensions -Version 9.0.0-preview.1.24080.9                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="9.0.0-preview.1.24080.9" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Microsoft.Extensions.Options.ConfigurationExtensions --version 9.0.0-preview.1.24080.9                
#r "nuget: Microsoft.Extensions.Options.ConfigurationExtensions, 9.0.0-preview.1.24080.9"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Microsoft.Extensions.Options.ConfigurationExtensions as a Cake Addin
#addin nuget:?package=Microsoft.Extensions.Options.ConfigurationExtensions&version=9.0.0-preview.1.24080.9&prerelease

// Install Microsoft.Extensions.Options.ConfigurationExtensions as a Cake Tool
#tool nuget:?package=Microsoft.Extensions.Options.ConfigurationExtensions&version=9.0.0-preview.1.24080.9&prerelease                

About

Microsoft.Extensions.Options.ConfigurationExtensions provides additional configuration-specific functionality related to Options.

Key Features

  • Extension methods for OptionsBuilder for configuration binding
  • Extension methods for IServiceCollection for Options configuration
  • ConfigurationChangeTokenSource<TOptions> for monitoring configuration changes

How to Use

Options Configuration binding
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;

class Program
{
    // appsettings.json contents:
    // {
    //   "MyOptions": {
    //     "Setting1": "Value1",
    //     "Setting2": "Value2"
    //   }
    // }

    static void Main(string[] args)
    {
        IConfiguration configuration = new ConfigurationBuilder()
            .SetBasePath(Environment.CurrentDirectory)
            .AddJsonFile("appsettings.json")
            .Build();

        IServiceCollection services = new ServiceCollection();

        // Bind the configuration to MyOptions
        services.Configure<MyOptions>(configuration.GetSection("MyOptions"));

        IServiceProvider serviceProvider = services.BuildServiceProvider();

        // Retrieve MyOptions using dependency injection
        var myOptions = serviceProvider.GetRequiredService<IOptions<MyOptions>>().Value;

        // Access the bound configuration values
        Console.WriteLine($"Setting1: {myOptions.Setting1}");
        Console.WriteLine($"Setting2: {myOptions.Setting2}");
    }
}

public class MyOptions
{
    public string Setting1 { get; set; }
    public string Setting2 { get; set; }
}

Monitoring options configuration changes
// Assume we have a class that represents some options
public class MyOptions
{
    public string Name { get; set; }
    public int Age { get; set; }
}

// appsettings.json contents:
// {
//   "MyOptions": {
//     "Name": "Alice",
//     "Age": 25
//   }
// }

// Assume we have a configuration object that contains some settings
var config = new ConfigurationBuilder()
    .AddJsonFile("appsettings.json")
    .Build();

// We can use the ConfigurationChangeTokenSource to create a change token source for the options
var changeTokenSource = new ConfigurationChangeTokenSource<MyOptions>(config.GetSection("MyOptions"));

// We can register the change token source with the options monitor
services.AddOptions<MyOptions>()
    .Configure(options =>
    {
        // Configure the options with the configuration values
        config.GetSection("MyOptions").Bind(options);
    })
    .AddChangeTokenSource(changeTokenSource);

// Now we can inject the options monitor into any class that needs them
public class MyClass
{
    private readonly IOptionsMonitor<MyOptions> _optionsMonitor;

    public MyClass(IOptionsMonitor<MyOptions> optionsMonitor)
    {
        _optionsMonitor = optionsMonitor;
    }

    public void DoSomething()
    {
        // Can access the current options value like this
        var options = _optionsMonitor.CurrentValue;
        var name = options.Name;
        var age = options.Age;
        // Do something with name and age

        // Can also register a callback to be notified when the options change
        _optionsMonitor.OnChange(newOptions =>
        {
            // Do something when the options change
        });
    }
}

Main Types

The main types provided by this library are:

  • ConfigurationChangeTokenSource
  • OptionsBuilderConfigurationExtensions
  • OptionsConfigurationServiceCollectionExtensions

Additional Documentation

Feedback & Contributing

Microsoft.Extensions.Options.ConfigurationExtensions is released as open source under the MIT license. Bug reports and contributions are welcome at the GitHub repository.

Product 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. 
.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 was computed. 
.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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (3.5K)

Showing the top 5 NuGet packages that depend on Microsoft.Extensions.Options.ConfigurationExtensions:

Package Downloads
Microsoft.Extensions.Logging.Configuration

Configuration support for Microsoft.Extensions.Logging.

Microsoft.Extensions.Diagnostics

This package includes the default implementation of IMeterFactory and additional extension methods to easily register it with the Dependency Injection framework.

Microsoft.AspNetCore.App

Provides a default set of APIs for building an ASP.NET Core application. This package requires the ASP.NET Core runtime. This runtime is installed by the .NET Core SDK, or can be acquired separately using installers available at https://aka.ms/dotnet-download.

Microsoft.Identity.Web.TokenAcquisition

Implementation for higher level API for confidential client applications (ASP.NET Core and SDK/.NET).

Microsoft.AspNetCore.All

Provides a default set of APIs for building an ASP.NET Core application, and also includes API for third-party integrations with ASP.NET Core. This package requires the ASP.NET Core runtime. This runtime is installed by the .NET Core SDK, or can be acquired separately using installers available at https://aka.ms/dotnet-download.

GitHub repositories (258)

Showing the top 5 popular GitHub repositories that depend on Microsoft.Extensions.Options.ConfigurationExtensions:

Repository Stars
ardalis/CleanArchitecture
Clean Architecture Solution Template: A starting point for Clean Architecture with ASP.NET Core
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
chocolatey/choco
Chocolatey - the package manager for Windows
Version Downloads Last updated
9.0.0-rc.1.24431.7 12,555 9/10/2024
9.0.0-preview.7.24405.7 32,778 8/13/2024
9.0.0-preview.6.24327.7 66,613 7/9/2024
9.0.0-preview.5.24306.7 59,790 6/11/2024
9.0.0-preview.4.24266.19 44,709 5/21/2024
9.0.0-preview.3.24172.9 116,272 4/11/2024
9.0.0-preview.2.24128.5 61,430 3/12/2024
9.0.0-preview.1.24080.9 65,500 2/13/2024
8.0.0 94,926,752 11/14/2023
8.0.0-rc.2.23479.6 894,924 10/10/2023
8.0.0-rc.1.23419.4 322,058 9/12/2023
8.0.0-preview.7.23375.6 284,951 8/8/2023
8.0.0-preview.6.23329.7 90,131 7/11/2023
8.0.0-preview.5.23280.8 63,837 6/13/2023
8.0.0-preview.4.23259.5 202,235 5/16/2023
8.0.0-preview.3.23174.8 95,242 4/11/2023
8.0.0-preview.2.23128.3 50,376 3/14/2023
8.0.0-preview.1.23110.8 98,578 2/21/2023
7.0.0 100,836,367 11/7/2022
7.0.0-rc.2.22472.3 169,452 10/11/2022
7.0.0-rc.1.22426.10 79,271 9/14/2022
7.0.0-preview.7.22375.6 62,858 8/9/2022
7.0.0-preview.6.22324.4 59,028 7/12/2022
7.0.0-preview.5.22301.12 47,727 6/14/2022
7.0.0-preview.4.22229.4 55,787 5/10/2022
7.0.0-preview.3.22175.4 50,771 4/13/2022
7.0.0-preview.2.22152.2 15,754 3/14/2022
7.0.0-preview.1.22076.8 30,824 2/17/2022
6.0.0 254,376,806 11/8/2021
6.0.0-rc.2.21480.5 395,944 10/12/2021
6.0.0-rc.1.21451.13 280,516 9/14/2021
6.0.0-preview.7.21377.19 146,851 8/10/2021
6.0.0-preview.6.21352.12 87,411 7/14/2021
6.0.0-preview.5.21301.5 39,820 6/15/2021
6.0.0-preview.4.21253.7 32,454 5/24/2021
6.0.0-preview.3.21201.4 56,363 4/8/2021
6.0.0-preview.2.21154.6 82,950 3/11/2021 6.0.0-preview.2.21154.6 is deprecated because it is no longer maintained.
6.0.0-preview.1.21102.12 66,850 2/12/2021 6.0.0-preview.1.21102.12 is deprecated because it is no longer maintained.
5.0.0 160,996,161 11/9/2020 5.0.0 is deprecated because it is no longer maintained.
5.0.0-rc.2.20475.5 125,802 10/13/2020 5.0.0-rc.2.20475.5 is deprecated because it is no longer maintained.
5.0.0-rc.1.20451.14 267,641 9/14/2020 5.0.0-rc.1.20451.14 is deprecated because it is no longer maintained.
5.0.0-preview.8.20407.11 303,960 8/25/2020 5.0.0-preview.8.20407.11 is deprecated because it is no longer maintained.
5.0.0-preview.7.20364.11 43,838 7/21/2020 5.0.0-preview.7.20364.11 is deprecated because it is no longer maintained.
5.0.0-preview.6.20305.6 42,873 6/25/2020 5.0.0-preview.6.20305.6 is deprecated because it is no longer maintained.
5.0.0-preview.5.20278.1 21,813 6/10/2020 5.0.0-preview.5.20278.1 is deprecated because it is no longer maintained.
5.0.0-preview.4.20251.6 35,115 5/18/2020 5.0.0-preview.4.20251.6 is deprecated because it is no longer maintained.
5.0.0-preview.3.20215.2 30,866 4/23/2020 5.0.0-preview.3.20215.2 is deprecated because it is no longer maintained.
5.0.0-preview.2.20160.3 54,388 4/2/2020 5.0.0-preview.2.20160.3 is deprecated because it is no longer maintained.
5.0.0-preview.1.20120.4 31,787 3/16/2020 5.0.0-preview.1.20120.4 is deprecated because it is no longer maintained.
3.1.32 4,114,903 12/13/2022
3.1.31 993,258 11/8/2022
3.1.30 1,268,217 10/11/2022
3.1.29 567,786 9/13/2022
3.1.28 1,003,654 8/9/2022
3.1.27 1,050,968 7/12/2022
3.1.26 579,981 6/14/2022
3.1.25 1,161,357 5/10/2022
3.1.24 667,808 4/11/2022
3.1.23 1,642,172 3/8/2022
3.1.22 9,715,374 12/14/2021
3.1.21 3,343,392 11/7/2021
3.1.20 1,374,126 10/11/2021
3.1.19 1,525,906 9/14/2021
3.1.18 3,281,664 8/10/2021
3.1.17 2,533,370 7/13/2021
3.1.16 2,599,108 6/8/2021
3.1.15 4,019,190 5/11/2021
3.1.14 9,312,116 4/6/2021
3.1.13 6,279,927 3/9/2021
3.1.12 4,269,775 2/9/2021
3.1.11 5,152,614 1/12/2021
3.1.10 10,911,841 11/9/2020
3.1.9 12,313,234 10/13/2020
3.1.8 17,111,913 9/8/2020
3.1.7 10,102,497 8/11/2020
3.1.6 18,177,527 7/14/2020
3.1.5 17,840,528 6/9/2020
3.1.4 11,768,787 5/12/2020
3.1.3 18,792,654 3/24/2020
3.1.2 17,543,261 2/18/2020
3.1.1 14,406,063 1/14/2020
3.1.0 95,575,301 12/3/2019
3.1.0-preview3.19553.2 54,849 11/13/2019 3.1.0-preview3.19553.2 is deprecated because it is no longer maintained.
3.1.0-preview2.19525.4 15,701 11/1/2019 3.1.0-preview2.19525.4 is deprecated because it is no longer maintained.
3.1.0-preview1.19506.1 18,781 10/15/2019 3.1.0-preview1.19506.1 is deprecated because it is no longer maintained.
3.0.3 578,463 2/18/2020 3.0.3 is deprecated because it is no longer maintained.
3.0.2 783,530 1/14/2020 3.0.2 is deprecated because it is no longer maintained.
3.0.1 2,150,392 11/18/2019 3.0.1 is deprecated because it is no longer maintained.
3.0.0 32,589,007 9/23/2019 3.0.0 is deprecated because it is no longer maintained.
3.0.0-rc1.19456.10 34,962 9/16/2019 3.0.0-rc1.19456.10 is deprecated because it is no longer maintained.
3.0.0-preview9.19423.4 131,521 9/4/2019 3.0.0-preview9.19423.4 is deprecated because it is no longer maintained.
3.0.0-preview8.19405.4 145,260 8/13/2019 3.0.0-preview8.19405.4 is deprecated because it is no longer maintained.
3.0.0-preview7.19362.4 76,320 7/23/2019 3.0.0-preview7.19362.4 is deprecated because it is no longer maintained.
3.0.0-preview6.19304.6 138,079 6/12/2019 3.0.0-preview6.19304.6 is deprecated because it is no longer maintained.
3.0.0-preview5.19227.9 152,761 5/6/2019 3.0.0-preview5.19227.9 is deprecated because it is no longer maintained.
3.0.0-preview4.19216.2 23,305 4/18/2019 3.0.0-preview4.19216.2 is deprecated because it is no longer maintained.
3.0.0-preview3.19153.1 146,420 3/6/2019 3.0.0-preview3.19153.1 is deprecated because it is no longer maintained.
3.0.0-preview.19074.2 94,417 1/29/2019 3.0.0-preview.19074.2 is deprecated because it is no longer maintained.
3.0.0-preview.18572.1 10,890 12/4/2018 3.0.0-preview.18572.1 is deprecated because it is no longer maintained.
2.2.0 82,960,455 12/3/2018 2.2.0 is deprecated because it is no longer maintained.
2.2.0-preview3-35497 139,477 10/17/2018 2.2.0-preview3-35497 is deprecated because it is no longer maintained.
2.2.0-preview2-35157 64,317 9/12/2018 2.2.0-preview2-35157 is deprecated because it is no longer maintained.
2.2.0-preview1-35029 34,078 8/22/2018 2.2.0-preview1-35029 is deprecated because it is no longer maintained.
2.1.1 61,887,117 6/18/2018
2.1.0 173,211,944 5/29/2018
2.1.0-rc1-final 75,122 5/6/2018 2.1.0-rc1-final is deprecated because it is no longer maintained.
2.1.0-preview2-final 66,397 4/10/2018 2.1.0-preview2-final is deprecated because it is no longer maintained.
2.1.0-preview1-final 159,010 2/26/2018 2.1.0-preview1-final is deprecated because it is no longer maintained.
2.0.2 6,042,696 5/7/2018 2.0.2 is deprecated because it is no longer maintained.
2.0.1 10,263,271 3/13/2018 2.0.1 is deprecated because it is no longer maintained.
2.0.0 333,854,508 8/11/2017 2.0.0 is deprecated because it is no longer maintained.
2.0.0-preview2-final 122,080 6/28/2017 2.0.0-preview2-final is deprecated because it is no longer maintained.
2.0.0-preview1-final 38,974 5/10/2017 2.0.0-preview1-final is deprecated because it is no longer maintained.
1.1.2 7,904,233 5/9/2017 1.1.2 is deprecated because it is no longer maintained.
1.1.1 2,741,172 3/6/2017 1.1.1 is deprecated because it is no longer maintained.
1.1.0 2,329,954 11/16/2016 1.1.0 is deprecated because it is no longer maintained.
1.1.0-preview1-final 15,577 10/24/2016 1.1.0-preview1-final is deprecated because it is no longer maintained.
1.0.2 704,511 3/6/2017 1.0.2 is deprecated because it is no longer maintained.
1.0.1 250,546 12/12/2016 1.0.1 is deprecated because it is no longer maintained.
1.0.0 2,038,782 6/27/2016 1.0.0 is deprecated because it is no longer maintained.
1.0.0-rc2-final 23,425 5/16/2016 1.0.0-rc2-final is deprecated because it is no longer maintained.