FeatureOne.SQL
5.1.0
dotnet add package FeatureOne.SQL --version 5.1.0
NuGet\Install-Package FeatureOne.SQL -Version 5.1.0
<PackageReference Include="FeatureOne.SQL" Version="5.1.0" />
<PackageVersion Include="FeatureOne.SQL" Version="5.1.0" />
<PackageReference Include="FeatureOne.SQL" />
paket add FeatureOne.SQL --version 5.1.0
#r "nuget: FeatureOne.SQL, 5.1.0"
#:package FeatureOne.SQL@5.1.0
#addin nuget:?package=FeatureOne.SQL&version=5.1.0
#tool nuget:?package=FeatureOne.SQL&version=5.1.0
.Net Library to implement feature toggles.
Nuget Packages
Concept
What is a feature toggle?
Feature toggle is a mechanism that allows code to be turned “on” or “off” remotely without the need for a deploy. Feature toggles are commonly used in applications to gradually roll out new features, allowing teams to test changes on a small subset of users before releasing them to everyone.
How feature toggles work
Feature toggle is typically a logical check added to codebase to execute or ignore certain functionality in context based on evaluated status of the toggle at runitme.
In code, the functionality to be released is wrapped so that it can be controlled by the status of a feature toggle. If the status of the feature toggle is “on”, then the wrapped functionality is executed. If the status of the feature toggle is “off”, then the wrapped functionality is skipped. The statuses of each feature is provided by a store provider external to the application.
The benefits of feature toggles
The primary benefit of feature flagging is that it mitigates the risks associated with releasing changes to an application. Whether it be a new feature release or a small refactor, there is always the inherent risk of releasing new regressions. To mitigate this, changes to an application can be placed behind feature toggles, allowing them to be turned “on” or “off” in the event of an emergency.
Getting Started?
i. Installation
Install the latest nuget package as appropriate.
FeatureOne - for installing FeatureOne for custom IStorageProvider implementation.
NuGet\Install-Package FeatureOne
FeatureOne.SQL - for installing FeatureOne with SQL storage provider.
NuGet\Install-Package FeatureOne.SQL
FeatureOne.File - for installing FeatureOne with File system storage provider.
NuGet\Install-Package FeatureOne.File
ii. Developer Guide
Please see Developer Guide for details on how to implement FeatureOne in your project.
Support
If you are having problems, please let me know by raising a new issue.
License
This project is licensed with the MIT license.
Version History
The following previous versions are available:
| Version | Release Notes |
|---|---|
v5.0.0 |
Notes |
v4.0.0 |
Notes |
v3.0.0 |
Notes |
v2.0.0 |
Notes |
Recent Releases
| Version | Release Date | Type | Key Changes | Backward Compatibility |
|---|---|---|---|---|
| v5.0.0 | Previous | Initial | Core feature toggle functionality | N/A (Initial release) |
| v5.1.0 | Nov 03, 2025 | Minor | Security fixes (ReDoS protection, secure type loading), architectural improvements (prefix matching, dependency injection), new features (DateRangeCondition, configuration validation), DI integration | High - maintains all existing functionality with minor security-related behavioral changes |
Credits
Thank you for reading. Please fork, explore, contribute and report. Happy Coding !! 😃
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. 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 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. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| .NET Framework | net462 is compatible. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.6.2
- FeatureOne (>= 5.1.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.0)
- System.Data.Common (>= 4.3.0)
- System.Text.Json (>= 9.0.0)
- System.Text.RegularExpressions (>= 4.3.1)
-
.NETStandard 2.1
- FeatureOne (>= 5.1.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.0)
- System.Data.Common (>= 4.3.0)
- System.Text.Json (>= 9.0.0)
- System.Text.RegularExpressions (>= 4.3.1)
-
net9.0
- FeatureOne (>= 5.1.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.0)
- System.Data.Common (>= 4.3.0)
- System.Text.Json (>= 9.0.0)
- System.Text.RegularExpressions (>= 4.3.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Release Notes v5.1.0. - Targets .Net Framework 4.6.2, .NetStandard 2.1 and .Net 9.0
Library to Implement Feature Toggles to hide/show program features with SQL storage.
Security Fixes:
- Fixed RegexCondition ReDoS (Regular Expression Denial of Service) vulnerability with timeout validation
- Secured dynamic type loading in ConditionDeserializer with explicit safe type registry
Architectural Improvements:
- Fixed FindStartsWith implementation for actual prefix matching
- Implemented proper dependency injection patterns with null validation
New Features:
- Added DateRangeCondition for time-based feature toggles
- Added Configuration Validation System with clear error messages
Supports configuring all Db providers - MSSQL, SQLite, ODBC, OLEDB, MySQL, PostgreSQL.
Provides Out of box Simple and Regex toggle conditions.
Provides the support for default memory caching via configuration.
Provides extensibility for custom implementations ie.
-- Provides extensibility for implementing custom toggle conditions for bespoke use cases.
-- Provides extensibility to plugin other SQL providers.
-- Provides extensibility for implementing custom caching providers.
-- Provides extensibility for implementing custom toggle deserializer for bespoke scenarios.