Skip to content

Dynamic Feature - Microsoft.FeatureManagement v3 support #315

Description

Microsoft.FeatureManagement 3.0.0 support.

This configuration library provides a mechanism to use feature flags defined in Azure App Configuration with the Microsoft.FeatureManagement library. Version 3.0 of the Microsoft.FeatureManagement library will be introducing a new schema to define feature flags. This new schema will enable dynamic features to be defined.

To enable compatability with the new schema introduced in the Microsoft.FeatureManagement v3 library we should add an opt-in capability into our next 5.x preview package (E.g. 5.1.0-preview). This will enable two scenarios to work with the v3 Microsoft.FeatureManagement library:

  • Use dynamic features defined in Azure App Configuration with the Microsoft.FeatureManagement library.
  • Define feature flags in appsettings file using the new feature flag schema while simultaneously pulling feature flags from Azure App Configuration.

Note: Enabling this opt-in flag will cause feature flags to stop working with version 2.x of the feature management library.

Opt-in flag

public class FeatureFlagOptions
{
    ...

    /// <summary>
    /// Forces feature flags to be written into the configuration system using the feature flag 2.0 schema introduced in
    /// Microsoft.FeatureManagement 3.0.0-preview.
    /// </summary>
    public bool EnablePreviewFeatureFlagSchema { get; set; }

    ...
}

Usage

o.UseFeatureFlags(fo =>
{
    fo.EnablePreviewFeatureFlagSchema = true;
}

Guidance

If you would like to try the 3.0.0-preview release of Microsoft.FeatureManagement and get feature flags as well as dynamic features from Azure App Configuration then enable this opt-in flag.

If you would like to continue using the stable 2.x versions of Microsoft.FeatureManagement then this flag can be ignored.

Preview Functionality

This flag will only be available in preview versions of the 5.x Azure App Configuration .NET configuration provider.

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions