name: prepare-release description: "Prepare a release for the Feature Management .NET SDK. Use when user mentions release preparation, version bump, creating merge PRs, preview release, or stable release for this project."
Prepare Release
This skill automates the release preparation workflow for the Feature Management .NET SDK project.
When to Use This Skill
Use this skill when you need to:
- Bump the package version for a new stable or preview release
- Create merge PRs to sync branches (main → release, preview → release)
- Prepare all the PRs needed before publishing a new release
Background
Repository Information
- GitHub Repo: https://github.com/microsoft/FeatureManagement-Dotnet
- Packages (all 3 are released together with the same version):
Microsoft.FeatureManagement— Base packageMicrosoft.FeatureManagement.AspNetCore— ASP.NET Core packageMicrosoft.FeatureManagement.Telemetry.ApplicationInsights— Application Insights telemetry package
Branch Structure
main– primary development branch for stable releasespreview– development branch for preview releasesrelease/v{major}– release branch (e.g.,release/v4)
Version Files
The version is defined by <MajorVersion>, <MinorVersion>, <PatchVersion>, and optionally <PreviewVersion> properties in all three .csproj files simultaneously:
src/Microsoft.FeatureManagement/Microsoft.FeatureManagement.csprojsrc/Microsoft.FeatureManagement.AspNetCore/Microsoft.FeatureManagement.AspNetCore.csprojsrc/Microsoft.FeatureManagement.Telemetry.ApplicationInsights/Microsoft.FeatureManagement.Telemetry.ApplicationInsights.csproj
Each file contains a version block like:
<!-- Official Version -->
<PropertyGroup>
<MajorVersion>4</MajorVersion>
<MinorVersion>1</MinorVersion>
<PatchVersion>0</PatchVersion>
</PropertyGroup>
For preview versions, a <PreviewVersion> line is also present:
<!-- Official Version -->
<PropertyGroup>
<MajorVersion>4</MajorVersion>
<MinorVersion>0</MinorVersion>
<PatchVersion>0</PatchVersion>
<PreviewVersion>-preview5</PreviewVersion>
</PropertyGroup>
Version Format
- Stable:
{major}.{minor}.{patch}(e.g.,4.1.0) - Preview:
{major}.{minor}.{patch}-preview{N}(e.g.,4.0.0-preview5)
Quick Start
Ask the user whether this is a stable or preview release, and what the new version number should be. Then follow the appropriate workflow below.
Workflow A: Stable Release
Step 1: Version Bump PR
Create a version bump PR targeting main by running the version bump script:
.\scripts\version-bump.ps1 <new_version>
For example: .\scripts\version-bump.ps1 4.2.0
The script will automatically:
- Read the current version from the first
.csprojfile. - Create a new branch from
mainnamed<username>/version-bump-<new_version>(e.g.,linglingye/version-bump-4.2.0). - Update
<MajorVersion>,<MinorVersion>,<PatchVersion>in all three.csprojfiles, and remove<PreviewVersion>if present. - Commit, push, and create a PR to
mainwith title:Version bump <new_version>.
When the script prompts Proceed? [y/N], confirm by entering y.
Sample PR: https://github.com/microsoft/FeatureManagement-Dotnet/pull/540
Step 2: Merge Main to Release Branch
After the version bump PR is merged, create a PR to merge main into the release branch by running:
.\scripts\merge-to-release.ps1 <new_version>
For example: .\scripts\merge-to-release.ps1 4.2.0
When the script prompts Proceed? [y/N], confirm by entering y.
Important: Use "Create a merge commit" (not "Squash and merge") when merging this PR to preserve commit history.
Sample PR: https://github.com/microsoft/FeatureManagement-Dotnet/pull/541
Workflow B: Preview Release
Step 1: Version Bump PR
Create a version bump PR targeting preview by running the version bump script with the -Preview flag:
.\scripts\version-bump.ps1 <new_version> -Preview
For example: .\scripts\version-bump.ps1 4.0.0-preview4 -Preview
When the script prompts Proceed? [y/N], confirm by entering y.
Sample PR: https://github.com/microsoft/FeatureManagement-Dotnet/pull/476
Step 2: Merge Preview to Release Branch
After the version bump PR is merged, create a PR to merge preview into the release branch by running:
.\scripts\merge-to-release.ps1 <new_version> -Preview
For example: .\scripts\merge-to-release.ps1 4.0.0-preview4 -Preview
When the script prompts Proceed? [y/N], confirm by entering y.
Important: Use "Create a merge commit" (not "Squash and merge") when merging this PR to preserve commit history.
Sample PR: https://github.com/microsoft/FeatureManagement-Dotnet/pull/477
Review Checklist
Each PR should be reviewed with the following checks:
- Version is updated consistently across all 3
.csprojfiles - No unintended file changes are included
- Merge PRs use merge commit strategy (not squash)
- Branch names follow the naming conventions
- All CI checks pass