From 2b9b2c3495a7ec980b9e39675ba425a5d2fafb9a Mon Sep 17 00:00:00 2001 From: Jae Kim Date: Fri, 30 Oct 2026 11:46:37 -0700 Subject: [PATCH 1/2] [FSSDK-13375] update CHANGELOG for csharp v4.6.0 Co-Authored-By: Claude Opus 5.5 (1M context) --- CHANGELOG.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 292397c8..f8419cfb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Optimizely C# SDK Changelog +## 4.6.0 +October 30, 2026 + +### Changed + +**Local Holdouts: rule evaluation continues after a holdout hit**: +When a user matches a local holdout on a rule, the SDK now excludes the user from that rule only +and continues evaluating the remaining rules, instead of returning the holdout variation and skipping +the rest of the flag. Each local holdout hit sends its own holdout impression event (using the +existing event format), regardless of `sendFlagDecisions`. Global holdouts are unchanged. + +- Continue rule evaluation after local holdout hit ([#423](https://github.com/optimizely/csharp-sdk/pull/423)) + ## 4.5.0 September 3, 2026 From 4d778e4d910494fb5f4594088ba8e8644a00b026 Mon Sep 17 00:00:00 2001 From: Jae Kim Date: Fri, 30 Oct 2026 11:46:49 -0700 Subject: [PATCH 2/2] [FSSDK-13375] bump version to 4.6.0 Co-Authored-By: Claude Opus 5.5 (1M context) --- OptimizelySDK.DemoApp/Properties/AssemblyInfo.cs | 6 +++--- OptimizelySDK.Net35/Properties/AssemblyInfo.cs | 6 +++--- OptimizelySDK.Net40/Properties/AssemblyInfo.cs | 6 +++--- OptimizelySDK.NetStandard16/Properties/AssemblyInfo.cs | 6 +++--- OptimizelySDK.NetStandard20/Properties/AssemblyInfo.cs | 6 +++--- OptimizelySDK.Tests/Properties/AssemblyInfo.cs | 6 +++--- OptimizelySDK/Properties/AssemblyInfo.cs | 6 +++--- README.md | 2 +- 8 files changed, 22 insertions(+), 22 deletions(-) diff --git a/OptimizelySDK.DemoApp/Properties/AssemblyInfo.cs b/OptimizelySDK.DemoApp/Properties/AssemblyInfo.cs index dc0c34a0..d31bc94d 100644 --- a/OptimizelySDK.DemoApp/Properties/AssemblyInfo.cs +++ b/OptimizelySDK.DemoApp/Properties/AssemblyInfo.cs @@ -37,6 +37,6 @@ // // You can specify all the values or you can default the Revision and Build Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion("4.5.0.0")] -[assembly: AssemblyFileVersion("4.5.0.0")] -[assembly: AssemblyInformationalVersion("4.5.0")] // Used by NuGet. +[assembly: AssemblyVersion("4.6.0.0")] +[assembly: AssemblyFileVersion("4.6.0.0")] +[assembly: AssemblyInformationalVersion("4.6.0")] // Used by NuGet. diff --git a/OptimizelySDK.Net35/Properties/AssemblyInfo.cs b/OptimizelySDK.Net35/Properties/AssemblyInfo.cs index 5bf68dde..304737fb 100644 --- a/OptimizelySDK.Net35/Properties/AssemblyInfo.cs +++ b/OptimizelySDK.Net35/Properties/AssemblyInfo.cs @@ -37,6 +37,6 @@ // // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion("4.5.0.0")] -[assembly: AssemblyFileVersion("4.5.0.0")] -[assembly: AssemblyInformationalVersion("4.5.0")] // Used by NuGet. +[assembly: AssemblyVersion("4.6.0.0")] +[assembly: AssemblyFileVersion("4.6.0.0")] +[assembly: AssemblyInformationalVersion("4.6.0")] // Used by NuGet. diff --git a/OptimizelySDK.Net40/Properties/AssemblyInfo.cs b/OptimizelySDK.Net40/Properties/AssemblyInfo.cs index d04dbd79..b6c61190 100644 --- a/OptimizelySDK.Net40/Properties/AssemblyInfo.cs +++ b/OptimizelySDK.Net40/Properties/AssemblyInfo.cs @@ -37,6 +37,6 @@ // // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion("4.5.0.0")] -[assembly: AssemblyFileVersion("4.5.0.0")] -[assembly: AssemblyInformationalVersion("4.5.0")] // Used by NuGet. +[assembly: AssemblyVersion("4.6.0.0")] +[assembly: AssemblyFileVersion("4.6.0.0")] +[assembly: AssemblyInformationalVersion("4.6.0")] // Used by NuGet. diff --git a/OptimizelySDK.NetStandard16/Properties/AssemblyInfo.cs b/OptimizelySDK.NetStandard16/Properties/AssemblyInfo.cs index 26da9767..381c14d6 100644 --- a/OptimizelySDK.NetStandard16/Properties/AssemblyInfo.cs +++ b/OptimizelySDK.NetStandard16/Properties/AssemblyInfo.cs @@ -37,6 +37,6 @@ // // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion("4.5.0.0")] -[assembly: AssemblyFileVersion("4.5.0.0")] -[assembly: AssemblyInformationalVersion("4.5.0")] // Used by NuGet. +[assembly: AssemblyVersion("4.6.0.0")] +[assembly: AssemblyFileVersion("4.6.0.0")] +[assembly: AssemblyInformationalVersion("4.6.0")] // Used by NuGet. diff --git a/OptimizelySDK.NetStandard20/Properties/AssemblyInfo.cs b/OptimizelySDK.NetStandard20/Properties/AssemblyInfo.cs index 00588fb6..32c842fc 100644 --- a/OptimizelySDK.NetStandard20/Properties/AssemblyInfo.cs +++ b/OptimizelySDK.NetStandard20/Properties/AssemblyInfo.cs @@ -37,6 +37,6 @@ // // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion("4.5.0.0")] -[assembly: AssemblyFileVersion("4.5.0.0")] -[assembly: AssemblyInformationalVersion("4.5.0")] // Used by NuGet. +[assembly: AssemblyVersion("4.6.0.0")] +[assembly: AssemblyFileVersion("4.6.0.0")] +[assembly: AssemblyInformationalVersion("4.6.0")] // Used by NuGet. diff --git a/OptimizelySDK.Tests/Properties/AssemblyInfo.cs b/OptimizelySDK.Tests/Properties/AssemblyInfo.cs index af636a86..a92b12d3 100644 --- a/OptimizelySDK.Tests/Properties/AssemblyInfo.cs +++ b/OptimizelySDK.Tests/Properties/AssemblyInfo.cs @@ -30,6 +30,6 @@ // // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion("4.5.0.0")] -[assembly: AssemblyFileVersion("4.5.0.0")] -[assembly: AssemblyInformationalVersion("4.5.0")] // Used by NuGet. +[assembly: AssemblyVersion("4.6.0.0")] +[assembly: AssemblyFileVersion("4.6.0.0")] +[assembly: AssemblyInformationalVersion("4.6.0")] // Used by NuGet. diff --git a/OptimizelySDK/Properties/AssemblyInfo.cs b/OptimizelySDK/Properties/AssemblyInfo.cs index 3844133e..21379407 100644 --- a/OptimizelySDK/Properties/AssemblyInfo.cs +++ b/OptimizelySDK/Properties/AssemblyInfo.cs @@ -41,6 +41,6 @@ // // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion("4.5.0.0")] -[assembly: AssemblyFileVersion("4.5.0.0")] -[assembly: AssemblyInformationalVersion("4.5.0")] // Used by NuGet. +[assembly: AssemblyVersion("4.6.0.0")] +[assembly: AssemblyFileVersion("4.6.0.0")] +[assembly: AssemblyInformationalVersion("4.6.0")] // Used by NuGet. diff --git a/README.md b/README.md index f6cb468c..ebd240c0 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ dotnet add package Optimizely.SDK **PackageReference:** ```xml - + ``` An ASP.NET MVC sample project is also available: