CShells.Providers.FluentStorage 0.0.11

dotnet add package CShells.Providers.FluentStorage --version 0.0.11
                    
NuGet\Install-Package CShells.Providers.FluentStorage -Version 0.0.11
                    
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="CShells.Providers.FluentStorage" Version="0.0.11" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="CShells.Providers.FluentStorage" Version="0.0.11" />
                    
Directory.Packages.props
<PackageReference Include="CShells.Providers.FluentStorage" />
                    
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 CShells.Providers.FluentStorage --version 0.0.11
                    
#r "nuget: CShells.Providers.FluentStorage, 0.0.11"
                    
#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 CShells.Providers.FluentStorage@0.0.11
                    
#: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=CShells.Providers.FluentStorage&version=0.0.11
                    
Install as a Cake Addin
#tool nuget:?package=CShells.Providers.FluentStorage&version=0.0.11
                    
Install as a Cake Tool

CShells.Providers.FluentStorage

FluentStorage integration provider for CShells enabling shell configuration storage in various backends.

Purpose

This package provides a shell settings provider that uses FluentStorage to load and persist shell configurations from various storage backends including local disk, Azure Blob Storage, AWS S3, and more.

When to Use

  • Store shell configurations as individual JSON files instead of appsettings.json
  • Load shell configurations from cloud storage (Azure Blob, AWS S3)
  • Enable dynamic shell configuration updates without application restart
  • Separate shell configuration from application configuration
  • Multi-environment deployments with centralized configuration storage

Supported Storage Backends

FluentStorage supports numerous storage providers:

  • Local disk - Directory-based file storage
  • Azure Blob Storage - Azure cloud storage
  • AWS S3 - Amazon cloud storage
  • In-memory - Temporary storage for testing
  • And many more FluentStorage providers

Installation

dotnet add package CShells.Providers.FluentStorage
dotnet add package FluentStorage
# Add specific FluentStorage provider packages as needed
# e.g., FluentStorage.Azure.Blobs, FluentStorage.AWS

Quick Start

Local Disk Storage

Create JSON files in a Shells folder (e.g., Default.json, Admin.json):

Shells/Default.json:

{
  "Name": "Default",
  "Features": ["Core", "Weather"],
  "Configuration": {
    "WebRouting": {
      "Path": ""
    }
  }
}

Shells/Admin.json:

{
  "Name": "Admin",
  "Features": ["Core", "Admin"],
  "Configuration": {
    "WebRouting": {
      "Path": "admin",
      "RoutePrefix": "api/v1"
    }
  }
}

Program.cs:

using FluentStorage;
using CShells.Providers.FluentStorage;

var builder = WebApplication.CreateBuilder(args);

var shellsPath = Path.Combine(builder.Environment.ContentRootPath, "Shells");
var blobStorage = StorageFactory.Blobs.DirectoryFiles(shellsPath);

builder.AddShells(cshells =>
{
    cshells.WithFluentStorageProvider(blobStorage);
});

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

Azure Blob Storage

using FluentStorage;
using FluentStorage.Azure.Blobs;
using CShells.Providers.FluentStorage;

var builder = WebApplication.CreateBuilder(args);

var connectionString = builder.Configuration.GetConnectionString("AzureStorage");
var blobStorage = StorageFactory.Blobs.AzureBlobStorage(connectionString, "shells");

builder.AddShells(cshells =>
{
    cshells.WithFluentStorageProvider(blobStorage);
});

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

AWS S3 Storage

using FluentStorage;
using FluentStorage.AWS;
using CShells.Providers.FluentStorage;

var builder = WebApplication.CreateBuilder(args);

var blobStorage = StorageFactory.Blobs.AwsS3(
    accessKeyId: "your-access-key",
    secretAccessKey: "your-secret-key",
    bucketName: "shells",
    region: "us-east-1"
);

builder.AddShells(cshells =>
{
    cshells.WithFluentStorageProvider(blobStorage);
});

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

File Naming Convention

Shell configuration files should be named with the shell name followed by .json:

  • Default.json → Shell with Name: "Default"
  • Acme.json → Shell with Name: "Acme"
  • Contoso.json → Shell with Name: "Contoso"

Configuration Format

Each JSON file should contain a complete shell configuration:

{
  "Name": "ShellName",
  "Features": ["Feature1", "Feature2"],
  "Configuration": {
    "WebRouting": {
      "Path": "path",
      "Host": "example.com",
      "RoutePrefix": "api/v1"
    },
    "CustomSetting": "value"
  }
}

Benefits

  • Separation of concerns - Shell configurations separate from application settings
  • Dynamic updates - Update shell configurations without rebuilding or redeploying
  • Centralized management - Store configurations in cloud storage accessible across deployments
  • Version control friendly - Individual files are easier to track and manage
  • Environment-specific - Different storage backends for different environments

Learn More

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 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. 
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.0.11 83 2/28/2026
0.0.10 87 2/24/2026
0.0.9 92 2/15/2026
0.0.8 87 2/13/2026
0.0.7 91 2/9/2026
0.0.6 98 1/18/2026