Microsoft.Extensions.Primitives 11.0.0-preview.5.26302.115

About

Microsoft.Extensions.Primitives contains isolated types that are used in many places within console or ASP.NET Core applications using framework extensions.

Key Features

  • IChangeToken: An interface that represents a token that can notify when a change occurs. This can be used to trigger actions or invalidate caches when something changes. For example, the configuration and file providers libraries use this interface to reload settings or files when they are modified.
  • StringValues: A struct that represents a single string or an array of strings. This can be used to efficiently store and manipulate multiple values that are logically a single value. For example, the HTTP headers and query strings libraries use this struct to handle multiple values for the same key.
  • StringSegment: A struct that represents a substring of another string. This can be used to avoid allocating new strings when performing operations on parts of a string. For example, the configuration and logging libraries use this struct to parse and format strings.

How to Use

IChangeToken with configuration example

using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Primitives;
using System;

class Program
{
    static void Main(string[] args)
    {
        // Create a configuration builder
        var configurationBuilder = new ConfigurationBuilder()
            .SetBasePath(Environment.CurrentDirectory)
            // appsettings.json expected to have the following contents:
            // {
            //   "SomeKey": "SomeValue"
            // }
            .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);

        // Build the configuration
        IConfiguration configuration = configurationBuilder.Build();

        // Create a change token for the configuration
        IChangeToken changeToken = configuration.GetReloadToken();

        // Attach a change callback
        IDisposable changeTokenRegistration = changeToken.RegisterChangeCallback(state =>
        {
            Console.WriteLine("Configuration changed!");
            IConfigurationRoot root = (IConfigurationRoot)state;
            var someValue = root["SomeKey"]; // Access the updated configuration value
            Console.WriteLine($"New value of SomeKey: {someValue}");
        }, configuration);

        // go and update the value of the key SomeKey in appsettings.json.
        // The change callback will be invoked when the file is saved.
        Console.WriteLine("Listening for configuration changes. Press any key to exit.");
        Console.ReadKey();

        // Clean up the change token registration when no longer needed
        changeTokenRegistration.Dispose();
    }
}

StringValues example

using System;
using Microsoft.Extensions.Primitives;

namespace StringValuesSample
{
    class Program
    {
        static void Main(string[] args)
        {
            // Create a StringValues object from a single string or an array of strings
            StringValues single = "Hello";
            StringValues multiple = new string[] { "Hello", "World" };

            // Use the implicit conversion to string or the ToString method to get the values
            Console.WriteLine($"Single: {single}"); // Single: Hello
            Console.WriteLine($"Multiple: {multiple}"); // Multiple: Hello,World

            // Use the indexer, the Count property, and the IsNullOrEmpty method to access the values
            Console.WriteLine($"Multiple[1]: {multiple[1]}"); // Multiple[1]: World
            Console.WriteLine($"Single.Count: {single.Count}"); // Single.Count: 1
            Console.WriteLine($"Multiple.IsNullOrEmpty: {StringValues.IsNullOrEmpty(multiple)}"); // Multiple.IsNullOrEmpty: False

            // Use the Equals method or the == operator to compare two StringValues objects
            Console.WriteLine($"single == \"Hello\": {single == "Hello"}"); // single == "Hello": True
            Console.WriteLine($"multiple == \"Hello\": {multiple == "Hello"}"); // multiple == "Hello": False
       }
    }
}

Main Types

The main types provided by this library are:

  • IChangeToken
  • StringValues
  • StringSegment

Additional Documentation

Feedback & Contributing

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

Showing the top 20 packages that depend on Microsoft.Extensions.Primitives.

Packages Downloads
Microsoft.Extensions.Caching.Memory
In-memory cache implementation of Microsoft.Extensions.Caching.Memory.IMemoryCache.
256
Microsoft.Extensions.Caching.Memory
In-memory cache implementation of Microsoft.Extensions.Caching.Memory.IMemoryCache.
303
Microsoft.Extensions.Configuration.Abstractions
Abstractions of key-value pair based configuration. Commonly used types: Microsoft.Extensions.Configuration.IConfiguration Microsoft.Extensions.Configuration.IConfigurationBuilder Microsoft.Extensions.Configuration.IConfigurationProvider Microsoft.Extensions.Configuration.IConfigurationRoot Microsoft.Extensions.Configuration.IConfigurationSection
260
Microsoft.Extensions.Configuration.Abstractions
Abstractions of key-value pair based configuration. Commonly used types: Microsoft.Extensions.Configuration.IConfiguration Microsoft.Extensions.Configuration.IConfigurationBuilder Microsoft.Extensions.Configuration.IConfigurationProvider Microsoft.Extensions.Configuration.IConfigurationRoot Microsoft.Extensions.Configuration.IConfigurationSection
425
Microsoft.Extensions.Configuration.Abstractions
Abstractions of key-value pair based configuration. Commonly used types: Microsoft.Extensions.Configuration.IConfiguration Microsoft.Extensions.Configuration.IConfigurationBuilder Microsoft.Extensions.Configuration.IConfigurationProvider Microsoft.Extensions.Configuration.IConfigurationRoot Microsoft.Extensions.Configuration.IConfigurationSection
528
Microsoft.Extensions.Configuration.Abstractions
Abstractions of key-value pair based configuration. Commonly Used Types: Microsoft.Extensions.Configuration.IConfiguration Microsoft.Extensions.Configuration.IConfigurationBuilder Microsoft.Extensions.Configuration.IConfigurationProvider Microsoft.Extensions.Configuration.IConfigurationRoot Microsoft.Extensions.Configuration.IConfigurationSection
267
Microsoft.Extensions.Configuration.Abstractions
Abstractions of key-value pair based configuration. Commonly Used Types: Microsoft.Extensions.Configuration.IConfiguration Microsoft.Extensions.Configuration.IConfigurationBuilder Microsoft.Extensions.Configuration.IConfigurationProvider Microsoft.Extensions.Configuration.IConfigurationRoot Microsoft.Extensions.Configuration.IConfigurationSection
349
Microsoft.Extensions.Configuration.Abstractions
Provides abstractions of key-value pair based configuration. Interfaces defined in this package are implemented by classes in Microsoft.Extensions.Configuration and other configuration packages.
296
Microsoft.Extensions.Configuration.Abstractions
Provides abstractions of key-value pair based configuration. Interfaces defined in this package are implemented by classes in Microsoft.Extensions.Configuration and other configuration packages.
436
Microsoft.Extensions.FileProviders.Abstractions
Abstractions of files and directories. Commonly used types: Microsoft.Extensions.FileProviders.IDirectoryContents Microsoft.Extensions.FileProviders.IFileInfo Microsoft.Extensions.FileProviders.IFileProvider
276
Microsoft.Extensions.FileProviders.Abstractions
Abstractions of files and directories. Commonly used types: Microsoft.Extensions.FileProviders.IDirectoryContents Microsoft.Extensions.FileProviders.IFileInfo Microsoft.Extensions.FileProviders.IFileProvider
455
Microsoft.Extensions.FileProviders.Abstractions
Abstractions of files and directories. Commonly Used Types: Microsoft.Extensions.FileProviders.IDirectoryContents Microsoft.Extensions.FileProviders.IFileInfo Microsoft.Extensions.FileProviders.IFileProvider
279
Microsoft.Extensions.FileProviders.Abstractions
Abstractions of files and directories. Commonly Used Types: Microsoft.Extensions.FileProviders.IDirectoryContents Microsoft.Extensions.FileProviders.IFileInfo Microsoft.Extensions.FileProviders.IFileProvider
425
Microsoft.Extensions.Options
Provides a strongly typed way of specifying and accessing settings using dependency injection.
279
Microsoft.Extensions.Options
Provides a strongly typed way of specifying and accessing settings using dependency injection.
333
Microsoft.Extensions.Options
Provides a strongly typed way of specifying and accessing settings using dependency injection.
425
Microsoft.Extensions.Options
Provides a strongly typed way of specifying and accessing settings using dependency injection.
442
Microsoft.Extensions.Options
Provides a strongly typed way of specifying and accessing settings using dependency injection.
514
Microsoft.Extensions.Options
Provides a strongly typed way of specifying and accessing settings using dependency injection.
519
Microsoft.Extensions.Options.ConfigurationExtensions
Provides additional configuration specific functionality related to Options.
267

https://go.microsoft.com/fwlink/?LinkID=799421

.NET 10.0

  • No dependencies.

.NET 11.0

  • No dependencies.

.NET Framework 4.6.2

.NET Standard 2.0

Version Downloads Last updated
11.0.0-preview.5.26302.115 6 06/09/2026
11.0.0-preview.4.26230.115 11 05/13/2026
11.0.0-preview.3.26207.106 20 04/14/2026
11.0.0-preview.2.26159.112 27 03/12/2026
11.0.0-preview.1.26104.118 28 02/12/2026
10.0.9 4 06/09/2026
10.0.8 10 05/13/2026
10.0.7 22 04/21/2026
10.0.6 22 04/14/2026
10.0.5 27 03/13/2026
10.0.4 22 03/12/2026
10.0.3 33 02/12/2026
10.0.2 35 01/13/2026
10.0.1 63 12/11/2025
10.0.0 91 11/16/2025
10.0.0-rc.2.25502.107 83 10/15/2025
10.0.0-rc.1.25451.107 100 09/09/2025
10.0.0-preview.7.25380.108 93 08/13/2025
10.0.0-preview.6.25358.103 102 07/17/2025
10.0.0-preview.5.25277.114 109 06/07/2025
10.0.0-preview.4.25258.110 135 05/16/2025
10.0.0-preview.3.25171.5 115 04/13/2025
10.0.0-preview.2.25163.2 124 03/31/2025
10.0.0-preview.1.25080.5 106 03/31/2025
9.0.17 4 06/09/2026
9.0.16 11 05/13/2026
9.0.15 21 04/14/2026
9.0.14 25 03/12/2026
9.0.13 31 02/12/2026
9.0.12 35 01/13/2026
9.0.11 76 11/16/2025
9.0.10 101 10/15/2025
9.0.9 78 09/09/2025
9.0.8 142 08/05/2025
9.0.7 151 07/09/2025
9.0.6 93 06/12/2025
9.0.5 119 05/17/2025
9.0.4 104 04/09/2025
9.0.3 150 03/25/2025
9.0.2 211 02/14/2025
9.0.1 130 02/11/2025
9.0.0 309 11/14/2024
9.0.0-rc.2.24473.5 108 10/17/2024
9.0.0-rc.1.24431.7 105 10/28/2024
9.0.0-preview.7.24405.7 117 08/18/2024
9.0.0-preview.6.24327.7 138 07/22/2024
9.0.0-preview.5.24306.7 147 06/24/2024
9.0.0-preview.4.24266.19 138 07/22/2024
9.0.0-preview.3.24172.9 143 07/22/2024
9.0.0-preview.2.24128.5 128 07/22/2024
9.0.0-preview.1.24080.9 176 07/22/2024
8.0.0 552 02/04/2024
8.0.0-rc.2.23479.6 125 07/22/2024
8.0.0-rc.1.23419.4 135 07/22/2024
8.0.0-preview.7.23375.6 116 07/22/2024
8.0.0-preview.6.23329.7 138 07/22/2024
8.0.0-preview.5.23280.8 135 07/22/2024
8.0.0-preview.4.23259.5 139 07/22/2024
8.0.0-preview.3.23174.8 161 07/22/2024
8.0.0-preview.2.23128.3 153 07/22/2024
8.0.0-preview.1.23110.8 150 07/22/2024
7.0.0 468 02/04/2024
7.0.0-rc.2.22472.3 126 07/22/2024
7.0.0-rc.1.22426.10 147 07/22/2024
7.0.0-preview.7.22375.6 121 07/22/2024
7.0.0-preview.6.22324.4 131 07/22/2024
7.0.0-preview.5.22301.12 132 07/22/2024
7.0.0-preview.4.22229.4 126 07/22/2024
7.0.0-preview.3.22175.4 137 07/22/2024
7.0.0-preview.2.22152.2 143 07/22/2024
7.0.0-preview.1.22076.8 133 07/22/2024
6.0.2-mauipre.1.22102.15 74 08/18/2025
6.0.2-mauipre.1.22054.8 110 04/06/2025
6.0.1 111 11/14/2024
6.0.0 355 02/04/2024
6.0.0-rc.2.21480.5 146 07/22/2024
6.0.0-rc.1.21451.13 140 07/22/2024
6.0.0-preview.7.21377.19 158 07/22/2024
6.0.0-preview.6.21352.12 144 07/22/2024
6.0.0-preview.5.21301.5 154 07/22/2024
6.0.0-preview.4.21253.7 128 07/22/2024
6.0.0-preview.3.21201.4 136 07/22/2024
6.0.0-preview.2.21154.6 145 07/22/2024
6.0.0-preview.1.21102.12 141 07/22/2024
5.0.1 130 07/22/2024
5.0.0 296 02/04/2024
5.0.0-rc.2.20475.5 128 07/22/2024
5.0.0-rc.1.20451.14 133 07/22/2024
5.0.0-preview.8.20407.11 137 07/22/2024
5.0.0-preview.7.20364.11 119 07/22/2024
5.0.0-preview.6.20305.6 156 07/22/2024
5.0.0-preview.5.20278.1 143 07/22/2024
5.0.0-preview.4.20251.6 131 07/22/2024
5.0.0-preview.3.20215.2 140 07/22/2024
5.0.0-preview.2.20160.3 128 07/22/2024
5.0.0-preview.1.20120.4 133 07/22/2024
3.1.32 151 07/22/2024
3.1.31 135 07/22/2024
3.1.30 140 07/22/2024
3.1.29 152 07/22/2024
3.1.28 135 07/22/2024
3.1.27 136 07/22/2024
3.1.26 149 07/22/2024
3.1.25 139 07/22/2024
3.1.24 136 07/22/2024
3.1.23 145 07/22/2024
3.1.22 121 07/22/2024
3.1.21 147 07/22/2024
3.1.20 147 07/22/2024
3.1.19 126 07/22/2024
3.1.18 553 02/04/2024
3.1.17 154 07/22/2024
3.1.16 115 07/22/2024
3.1.15 138 07/22/2024
3.1.14 141 07/22/2024
3.1.13 148 07/22/2024
3.1.12 145 07/22/2024
3.1.11 139 07/22/2024
3.1.10 135 07/22/2024
3.1.9 148 07/22/2024
3.1.8 229 02/04/2024
3.1.7 130 07/22/2024
3.1.6 143 07/22/2024
3.1.5 118 07/22/2024
3.1.4 123 07/22/2024
3.1.3 135 07/22/2024
3.1.2 150 07/22/2024
3.1.1 141 07/22/2024
3.1.0 139 07/22/2024
3.1.0-preview3.19553.2 149 07/22/2024
3.1.0-preview2.19525.4 139 07/22/2024
3.1.0-preview1.19506.1 138 07/22/2024
3.0.3 151 07/22/2024
3.0.2 153 07/22/2024
3.0.1 147 07/22/2024
3.0.0 132 07/22/2024
3.0.0-rc1.19456.10 125 07/22/2024
3.0.0-preview9.19423.4 140 07/22/2024
3.0.0-preview8.19405.4 142 07/22/2024
3.0.0-preview7.19362.4 131 07/22/2024
3.0.0-preview6.19304.6 130 07/22/2024
3.0.0-preview5.19227.9 127 07/22/2024
3.0.0-preview4.19216.2 138 07/22/2024
3.0.0-preview3.19153.1 142 07/22/2024
3.0.0-preview.19074.2 137 07/22/2024
3.0.0-preview.18572.1 136 07/22/2024
2.2.0 237 02/05/2024
2.2.0-preview3-35497 128 07/22/2024
2.2.0-preview2-35157 135 07/22/2024
2.2.0-preview1-35029 135 07/22/2024
2.1.6 150 07/22/2024
2.1.1 143 07/22/2024
2.1.0 140 07/22/2024
2.1.0-rc1-final 143 07/22/2024
2.1.0-preview2-final 133 07/22/2024
2.1.0-preview1-final 133 07/22/2024
2.0.0 419 02/04/2024
2.0.0-preview2-final 126 07/22/2024
2.0.0-preview1-final 125 07/22/2024
1.1.1 134 07/22/2024
1.1.0 141 07/22/2024
1.1.0-preview1-final 134 07/22/2024
1.0.1 135 07/22/2024
1.0.0 145 07/22/2024
1.0.0-rc2-final 130 07/22/2024
1.0.0-rc1-final 136 07/22/2024