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
<PackageReference Include="CShells.Providers.FluentStorage" Version="0.0.11" />
<PackageVersion Include="CShells.Providers.FluentStorage" Version="0.0.11" />
<PackageReference Include="CShells.Providers.FluentStorage" />
paket add CShells.Providers.FluentStorage --version 0.0.11
#r "nuget: CShells.Providers.FluentStorage, 0.0.11"
#:package CShells.Providers.FluentStorage@0.0.11
#addin nuget:?package=CShells.Providers.FluentStorage&version=0.0.11
#tool nuget:?package=CShells.Providers.FluentStorage&version=0.0.11
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 withName: "Default"Acme.json→ Shell withName: "Acme"Contoso.json→ Shell withName: "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
- Main Documentation
- FluentStorage Documentation
- CShells Package - Core runtime
| Product | Versions 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. |
-
net10.0
- CShells (>= 0.0.11)
- FluentStorage (>= 6.0.0)
- JetBrains.Annotations (>= 2025.2.4)
-
net8.0
- CShells (>= 0.0.11)
- FluentStorage (>= 6.0.0)
- JetBrains.Annotations (>= 2025.2.4)
-
net9.0
- CShells (>= 0.0.11)
- FluentStorage (>= 6.0.0)
- JetBrains.Annotations (>= 2025.2.4)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.