OpSolutions.ConfigurationUi 1.0.0-beta9

.NET Standard 2.1
This is a prerelease version of OpSolutions.ConfigurationUi.
dotnet add package OpSolutions.ConfigurationUi --version 1.0.0-beta9
NuGet\Install-Package OpSolutions.ConfigurationUi -Version 1.0.0-beta9
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="OpSolutions.ConfigurationUi" Version="1.0.0-beta9" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add OpSolutions.ConfigurationUi --version 1.0.0-beta9
#r "nuget: OpSolutions.ConfigurationUi, 1.0.0-beta9"
#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 OpSolutions.ConfigurationUi as a Cake Addin
#addin nuget:?package=OpSolutions.ConfigurationUi&version=1.0.0-beta9&prerelease

// Install OpSolutions.ConfigurationUi as a Cake Tool
#tool nuget:?package=OpSolutions.ConfigurationUi&version=1.0.0-beta9&prerelease

ConfigurationUI

NuGet Version

ConfigurationUI is .Net library for managing Asp.Net Core configuration.
It can parse configuration schema from arbitrary .Net type and generate web-page for displaying/editing configuration in user-friendly manner.
ConfigurationUI is fully integrated with with built-in asp.net core configuration Microsoft.Extensions.Configuration, so developers don't have to change existing code, just continue using well-known patterns: OptionsMonitor<T>, IConfiguration, etc ...

Installation & Setup

Using ConfigurationUI is very simple, it is done in 4 steps:

  1. Install nuget package OpSolutions.ConfigurationUI
  2. Create class(es) for describing your application configuration (if not already have):
    public class Settings
    {
      public string StringSetting { get; set; }
      public int IntegerSetting { get; set; }
      public bool BooleanSetting { get; set; }
      public SettingSubSection SettingsSubSection { get; set; }
    }
    
    public class SettingSubSection
    {
        public string StringSetting { get; set; }
        public MyEnum EnumSetting { get; set; }
        public bool BooleanSetting { get; set; }
        public string[] ArraySetting { get; set; }
    }
    
    public enum MyEnum { FirstValue, SecondValue }
    
  3. Modify Program.cs and insert .AddConfigurationUi() method call:
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }
    
        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .AddConfigurationUi<Settings>("settings.json") // insert this line
                .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); });
    }
    
  4. Modify Startup.Configure method and add configuration middleware with app.UseConfigurationUi("/configuration"):
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
    
        app.UseConfigurationUi("/configuration"); // insert this line
    
        app.UseHttpsRedirection();
    
        app.UseRouting();
    
        app.UseAuthorization();
    
        app.UseEndpoints(endpoints => { endpoints.MapControllers(); });
    }
    

It's done. Navigate to /configuration in browser and you will see configuration editor page:

ConfigurationUi

Important Notes

  • Library does not support authorization out of box yet. Make sure to place some custom authorization/authentication middleware before app.UseConfigurationUi("/configuration"); so configuration endpoint will not be accessible to everyone
  • Currently web editor does not support or may not work as expected for following .Net types:
    • Dictionaries
    • FlagsAttribute decorated enums
    • Nullable value types

Any Contribution, Feature Request or Bug Report is welcome.

Product Versions
.NET net5.0 net5.0-windows net6.0 net6.0-android net6.0-ios net6.0-maccatalyst net6.0-macos net6.0-tvos net6.0-windows net7.0 net7.0-android net7.0-ios net7.0-maccatalyst net7.0-macos net7.0-tvos net7.0-windows
.NET Core netcoreapp3.0 netcoreapp3.1
.NET Standard netstandard2.1
MonoAndroid monoandroid
MonoMac monomac
MonoTouch monotouch
Tizen tizen60
Xamarin.iOS xamarinios
Xamarin.Mac xamarinmac
Xamarin.TVOS xamarintvos
Xamarin.WatchOS xamarinwatchos
Compatible target framework(s)
Additional computed target framework(s)
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
1.0.0-beta9 119 9/23/2021
1.0.0-beta8 107 9/17/2021
1.0.0-beta7 128 9/16/2021
1.0.0-beta6 117 9/15/2021
1.0.0-beta5 127 9/15/2021
1.0.0-beta4 134 9/15/2021
1.0.0-beta3 143 9/15/2021
1.0.0-beta2 130 9/15/2021
1.0.0-beta 113 9/14/2021