Philiprehberger.ConfigValidator 0.1.7

dotnet add package Philiprehberger.ConfigValidator --version 0.1.7
                    
NuGet\Install-Package Philiprehberger.ConfigValidator -Version 0.1.7
                    
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="Philiprehberger.ConfigValidator" Version="0.1.7" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Philiprehberger.ConfigValidator" Version="0.1.7" />
                    
Directory.Packages.props
<PackageReference Include="Philiprehberger.ConfigValidator" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Philiprehberger.ConfigValidator --version 0.1.7
                    
#r "nuget: Philiprehberger.ConfigValidator, 0.1.7"
                    
#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.
#:package Philiprehberger.ConfigValidator@0.1.7
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Philiprehberger.ConfigValidator&version=0.1.7
                    
Install as a Cake Addin
#tool nuget:?package=Philiprehberger.ConfigValidator&version=0.1.7
                    
Install as a Cake Tool

Philiprehberger.ConfigValidator

CI NuGet Last updated

Validate appsettings.json configuration sections at startup with attribute-based rules.

Installation

dotnet add package Philiprehberger.ConfigValidator

Usage

Define your options class with validation attributes

using Philiprehberger.ConfigValidator;

public class SmtpOptions
{
    [Required]
    public string Host { get; set; } = "";

    [Range(1, 65535)]
    public int Port { get; set; }

    [Required]
    [Pattern(@"^[^@]+@[^@]+\.[^@]+$")]
    public string FromAddress { get; set; } = "";

    [MinLength(1)]
    [MaxLength(100)]
    public string Username { get; set; } = "";
}

Register and validate at startup (fail-fast)

using Philiprehberger.ConfigValidator;

var builder = WebApplication.CreateBuilder(args);

builder.Services.ValidateConfiguration<SmtpOptions>(
    builder.Configuration,
    "Smtp");

var app = builder.Build();
app.Run();

If any validation rule fails, a ConfigValidationException is thrown immediately at startup with all errors listed.

Check without throwing

var errors = ConfigValidator.Check<SmtpOptions>(configuration, "Smtp");

foreach (var error in errors)
{
    Console.WriteLine(error);
}

API

Attributes

Attribute Target Description
[Required] Property Value must be present and non-null/non-empty
[Pattern(regex)] String property Value must match the regular expression
[Range(min, max)] Numeric property Value must be within range (inclusive)
[MinLength(n)] String/collection Length/count must be at least n
[MaxLength(n)] String/collection Length/count must be at most n

ConfigValidator

Method Description
Validate<T>(IConfiguration, string) Binds section to T, validates, throws ConfigValidationException on failure
Check<T>(IConfiguration, string) Binds section to T, validates, returns list of error strings

ConfigValidatorExtensions

Method Description
ValidateConfiguration<T>(IServiceCollection, IConfiguration, string) Validates at registration time and registers the bound instance as a singleton

ConfigValidationException

Member Description
Errors IReadOnlyList<string> of all validation error messages
Message Formatted string listing all errors

Development

dotnet build src/Philiprehberger.ConfigValidator.csproj --configuration Release

Support

If you find this project useful:

Star the repo

🐛 Report issues

💡 Suggest features

❤️ Sponsor development

🌐 All Open Source Projects

💻 GitHub Profile

🔗 LinkedIn Profile

License

MIT

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

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.7 118 4/1/2026
0.1.6 112 3/23/2026
0.1.5 108 3/23/2026
0.1.4 153 3/16/2026
0.1.3 137 3/16/2026
0.1.2 139 3/16/2026
0.1.1 131 3/13/2026
0.1.0 130 3/13/2026