From c018a8abaf083c62fe3dc1d1c93a557530b6a4b6 Mon Sep 17 00:00:00 2001 From: Md Junaed Hossain <169046794+junaed-optimizely@users.noreply.github.com> Date: Wed, 6 Aug 2025 22:53:40 +0600 Subject: [PATCH 01/16] [FSSDK-11731] windows version update --- .github/workflows/csharp.yml | 2 +- .github/workflows/csharp_release.yml | 6 +++--- .github/workflows/sonarqube.yml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/csharp.yml b/.github/workflows/csharp.yml index 1650a685..01e49323 100644 --- a/.github/workflows/csharp.yml +++ b/.github/workflows/csharp.yml @@ -29,7 +29,7 @@ jobs: netFrameworksAndUnitTest: name: Build Framework & Run Unit Tests needs: [ lintCodebase ] - runs-on: windows-2019 # required version for Framework 4.0 + runs-on: windows-2022 # required version for Framework 4.0 env: REPO_SLUG: ${{ github.repository }} BUILD_NUMBER: ${{ github.run_id }} diff --git a/.github/workflows/csharp_release.yml b/.github/workflows/csharp_release.yml index 80461161..0d87d228 100644 --- a/.github/workflows/csharp_release.yml +++ b/.github/workflows/csharp_release.yml @@ -31,7 +31,7 @@ jobs: buildFrameworkVersions: name: Build Framework versions needs: [ variables ] - runs-on: windows-2019 # required version for Framework 4.0 + runs-on: windows-2022 # required version for Framework 4.0 steps: - name: Checkout code uses: actions/checkout@v4 @@ -55,7 +55,7 @@ jobs: buildStandard16: name: Build Standard 1.6 version needs: [ variables ] - runs-on: windows-latest + runs-on: windows-2022 steps: - name: Checkout code uses: actions/checkout@v4 @@ -77,7 +77,7 @@ jobs: buildStandard20: name: Build Standard 2.0 version needs: [ variables ] - runs-on: windows-latest + runs-on: windows-2022 steps: - name: Checkout code uses: actions/checkout@v4 diff --git a/.github/workflows/sonarqube.yml b/.github/workflows/sonarqube.yml index 54ba8165..a902f99e 100644 --- a/.github/workflows/sonarqube.yml +++ b/.github/workflows/sonarqube.yml @@ -6,7 +6,7 @@ on: jobs: build: name: Build - runs-on: windows-latest + runs-on: windows-2022 steps: - name: Set up JDK 11 uses: actions/setup-java@v4 From f4e848f46629810e77cc8e11b7007bf09c0c6856 Mon Sep 17 00:00:00 2001 From: Md Junaed Hossain <169046794+junaed-optimizely@users.noreply.github.com> Date: Wed, 6 Aug 2025 23:42:50 +0600 Subject: [PATCH 02/16] [FSSDK-11731] developer pack installations --- .github/workflows/csharp.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/csharp.yml b/.github/workflows/csharp.yml index 01e49323..656ae48c 100644 --- a/.github/workflows/csharp.yml +++ b/.github/workflows/csharp.yml @@ -44,6 +44,10 @@ jobs: uses: microsoft/setup-msbuild@v1 - name: Setup NuGet uses: NuGet/setup-nuget@v1 + - name: Install .NET Framework Developer Packs + run: | + choco install netfx-4.5-devpack -y + choco install netfx-4.0-devpack -y - name: Restore NuGet packages run: nuget restore ./OptimizelySDK.NETFramework.sln - name: Build & strongly name assemblies From 2f7b30df5a87b3f0c853844c4346278f10e58b39 Mon Sep 17 00:00:00 2001 From: Md Junaed Hossain <169046794+junaed-optimizely@users.noreply.github.com> Date: Wed, 6 Aug 2025 23:50:03 +0600 Subject: [PATCH 03/16] [FSSDK-11731] developer pack version fix --- .github/workflows/csharp.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/csharp.yml b/.github/workflows/csharp.yml index 656ae48c..945173f8 100644 --- a/.github/workflows/csharp.yml +++ b/.github/workflows/csharp.yml @@ -46,8 +46,8 @@ jobs: uses: NuGet/setup-nuget@v1 - name: Install .NET Framework Developer Packs run: | - choco install netfx-4.5-devpack -y - choco install netfx-4.0-devpack -y + choco install netfx-4.5.2-devpack -y + choco install netfx-4.0.3-devpack -y - name: Restore NuGet packages run: nuget restore ./OptimizelySDK.NETFramework.sln - name: Build & strongly name assemblies From c7d24b84cb854f67821be033c6402216a2d9f46d Mon Sep 17 00:00:00 2001 From: Md Junaed Hossain <169046794+junaed-optimizely@users.noreply.github.com> Date: Wed, 6 Aug 2025 23:59:59 +0600 Subject: [PATCH 04/16] [FSSDK-11731] windows sdk for 4.0.3 pre-requisite --- .github/workflows/csharp.yml | 1 + .github/workflows/csharp_release.yml | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/.github/workflows/csharp.yml b/.github/workflows/csharp.yml index 945173f8..b50c80ec 100644 --- a/.github/workflows/csharp.yml +++ b/.github/workflows/csharp.yml @@ -47,6 +47,7 @@ jobs: - name: Install .NET Framework Developer Packs run: | choco install netfx-4.5.2-devpack -y + choco install windows-sdk-7.1 -y choco install netfx-4.0.3-devpack -y - name: Restore NuGet packages run: nuget restore ./OptimizelySDK.NETFramework.sln diff --git a/.github/workflows/csharp_release.yml b/.github/workflows/csharp_release.yml index 0d87d228..6e8fcf15 100644 --- a/.github/workflows/csharp_release.yml +++ b/.github/workflows/csharp_release.yml @@ -41,6 +41,11 @@ jobs: uses: microsoft/setup-msbuild@v2 - name: Setup NuGet uses: nuget/setup-nuget@v2 + - name: Install .NET Framework Developer Packs + run: | + choco install netfx-4.5.2-devpack -y + choco install windows-sdk-7.1 -y + choco install netfx-4.0.3-devpack -y - name: Restore NuGet packages run: nuget restore ./OptimizelySDK.NETFramework.sln - name: Build and strongly name assemblies From cf68b37f66382ec090469c359c41afa1779eaf41 Mon Sep 17 00:00:00 2001 From: Md Junaed Hossain <169046794+junaed-optimizely@users.noreply.github.com> Date: Thu, 7 Aug 2025 18:00:05 +0600 Subject: [PATCH 05/16] [FSSDK-11731] different approach --- .github/workflows/csharp.yml | 14 ++++++++++++-- .github/workflows/csharp_release.yml | 14 ++++++++++++-- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/.github/workflows/csharp.yml b/.github/workflows/csharp.yml index b50c80ec..38686019 100644 --- a/.github/workflows/csharp.yml +++ b/.github/workflows/csharp.yml @@ -46,9 +46,19 @@ jobs: uses: NuGet/setup-nuget@v1 - name: Install .NET Framework Developer Packs run: | + # Install .NET 4.5.2 developer pack (this works reliably) choco install netfx-4.5.2-devpack -y - choco install windows-sdk-7.1 -y - choco install netfx-4.0.3-devpack -y + + # Check what targeting packs are already available + echo "Checking available targeting packs..." + dir "C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools" || echo "No .NET 4.0 tools found" + dir "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework" || echo "No reference assemblies found" + + # Try to install .NET 4.0 targeting pack from a different source + echo "Attempting to download .NET 4.0 targeting pack..." + Invoke-WebRequest -Uri "https://download.microsoft.com/download/1/B/E/1BE39E79-7E39-46A3-96FF-047F95396215/dotNetFx40_Full_setup.exe" -OutFile "dotnet40.exe" + .\dotnet40.exe /quiet /norestart || echo "Installation failed or already installed" + continue-on-error: true - name: Restore NuGet packages run: nuget restore ./OptimizelySDK.NETFramework.sln - name: Build & strongly name assemblies diff --git a/.github/workflows/csharp_release.yml b/.github/workflows/csharp_release.yml index 6e8fcf15..9bb319e5 100644 --- a/.github/workflows/csharp_release.yml +++ b/.github/workflows/csharp_release.yml @@ -43,9 +43,19 @@ jobs: uses: nuget/setup-nuget@v2 - name: Install .NET Framework Developer Packs run: | + # Install .NET 4.5.2 developer pack (this works reliably) choco install netfx-4.5.2-devpack -y - choco install windows-sdk-7.1 -y - choco install netfx-4.0.3-devpack -y + + # Check what targeting packs are already available + echo "Checking available targeting packs..." + dir "C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools" || echo "No .NET 4.0 tools found" + dir "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework" || echo "No reference assemblies found" + + # Try to install .NET 4.0 targeting pack from a different source + echo "Attempting to download .NET 4.0 targeting pack..." + Invoke-WebRequest -Uri "https://download.microsoft.com/download/1/B/E/1BE39E79-7E39-46A3-96FF-047F95396215/dotNetFx40_Full_setup.exe" -OutFile "dotnet40.exe" + .\dotnet40.exe /quiet /norestart || echo "Installation failed or already installed" + continue-on-error: true - name: Restore NuGet packages run: nuget restore ./OptimizelySDK.NETFramework.sln - name: Build and strongly name assemblies From aeb2d4f254c3ef72c3727054967965f5f7c09101 Mon Sep 17 00:00:00 2001 From: Md Junaed Hossain <169046794+junaed-optimizely@users.noreply.github.com> Date: Thu, 7 Aug 2025 18:24:32 +0600 Subject: [PATCH 06/16] Revert "[FSSDK-11731] different approach" This reverts commit cf68b37f66382ec090469c359c41afa1779eaf41. --- .github/workflows/csharp.yml | 14 ++------------ .github/workflows/csharp_release.yml | 14 ++------------ 2 files changed, 4 insertions(+), 24 deletions(-) diff --git a/.github/workflows/csharp.yml b/.github/workflows/csharp.yml index 38686019..b50c80ec 100644 --- a/.github/workflows/csharp.yml +++ b/.github/workflows/csharp.yml @@ -46,19 +46,9 @@ jobs: uses: NuGet/setup-nuget@v1 - name: Install .NET Framework Developer Packs run: | - # Install .NET 4.5.2 developer pack (this works reliably) choco install netfx-4.5.2-devpack -y - - # Check what targeting packs are already available - echo "Checking available targeting packs..." - dir "C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools" || echo "No .NET 4.0 tools found" - dir "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework" || echo "No reference assemblies found" - - # Try to install .NET 4.0 targeting pack from a different source - echo "Attempting to download .NET 4.0 targeting pack..." - Invoke-WebRequest -Uri "https://download.microsoft.com/download/1/B/E/1BE39E79-7E39-46A3-96FF-047F95396215/dotNetFx40_Full_setup.exe" -OutFile "dotnet40.exe" - .\dotnet40.exe /quiet /norestart || echo "Installation failed or already installed" - continue-on-error: true + choco install windows-sdk-7.1 -y + choco install netfx-4.0.3-devpack -y - name: Restore NuGet packages run: nuget restore ./OptimizelySDK.NETFramework.sln - name: Build & strongly name assemblies diff --git a/.github/workflows/csharp_release.yml b/.github/workflows/csharp_release.yml index 9bb319e5..6e8fcf15 100644 --- a/.github/workflows/csharp_release.yml +++ b/.github/workflows/csharp_release.yml @@ -43,19 +43,9 @@ jobs: uses: nuget/setup-nuget@v2 - name: Install .NET Framework Developer Packs run: | - # Install .NET 4.5.2 developer pack (this works reliably) choco install netfx-4.5.2-devpack -y - - # Check what targeting packs are already available - echo "Checking available targeting packs..." - dir "C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools" || echo "No .NET 4.0 tools found" - dir "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework" || echo "No reference assemblies found" - - # Try to install .NET 4.0 targeting pack from a different source - echo "Attempting to download .NET 4.0 targeting pack..." - Invoke-WebRequest -Uri "https://download.microsoft.com/download/1/B/E/1BE39E79-7E39-46A3-96FF-047F95396215/dotNetFx40_Full_setup.exe" -OutFile "dotnet40.exe" - .\dotnet40.exe /quiet /norestart || echo "Installation failed or already installed" - continue-on-error: true + choco install windows-sdk-7.1 -y + choco install netfx-4.0.3-devpack -y - name: Restore NuGet packages run: nuget restore ./OptimizelySDK.NETFramework.sln - name: Build and strongly name assemblies From ece2d73475ab1ccb0911afed746802c5c5d17aaa Mon Sep 17 00:00:00 2001 From: Md Junaed Hossain <169046794+junaed-optimizely@users.noreply.github.com> Date: Thu, 7 Aug 2025 18:24:40 +0600 Subject: [PATCH 07/16] Revert "[FSSDK-11731] windows sdk for 4.0.3 pre-requisite" This reverts commit c7d24b84cb854f67821be033c6402216a2d9f46d. --- .github/workflows/csharp.yml | 1 - .github/workflows/csharp_release.yml | 5 ----- 2 files changed, 6 deletions(-) diff --git a/.github/workflows/csharp.yml b/.github/workflows/csharp.yml index b50c80ec..945173f8 100644 --- a/.github/workflows/csharp.yml +++ b/.github/workflows/csharp.yml @@ -47,7 +47,6 @@ jobs: - name: Install .NET Framework Developer Packs run: | choco install netfx-4.5.2-devpack -y - choco install windows-sdk-7.1 -y choco install netfx-4.0.3-devpack -y - name: Restore NuGet packages run: nuget restore ./OptimizelySDK.NETFramework.sln diff --git a/.github/workflows/csharp_release.yml b/.github/workflows/csharp_release.yml index 6e8fcf15..0d87d228 100644 --- a/.github/workflows/csharp_release.yml +++ b/.github/workflows/csharp_release.yml @@ -41,11 +41,6 @@ jobs: uses: microsoft/setup-msbuild@v2 - name: Setup NuGet uses: nuget/setup-nuget@v2 - - name: Install .NET Framework Developer Packs - run: | - choco install netfx-4.5.2-devpack -y - choco install windows-sdk-7.1 -y - choco install netfx-4.0.3-devpack -y - name: Restore NuGet packages run: nuget restore ./OptimizelySDK.NETFramework.sln - name: Build and strongly name assemblies From a97afaead010ad49761d18d31c36cc2147a3e2e6 Mon Sep 17 00:00:00 2001 From: Md Junaed Hossain <169046794+junaed-optimizely@users.noreply.github.com> Date: Thu, 7 Aug 2025 19:06:53 +0600 Subject: [PATCH 08/16] [FSSDK-11731] 4.5 check --- .github/workflows/csharp.yml | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/.github/workflows/csharp.yml b/.github/workflows/csharp.yml index 945173f8..e7286ff3 100644 --- a/.github/workflows/csharp.yml +++ b/.github/workflows/csharp.yml @@ -46,8 +46,19 @@ jobs: uses: NuGet/setup-nuget@v1 - name: Install .NET Framework Developer Packs run: | + # Install .NET 4.5.2 developer pack (this should work) choco install netfx-4.5.2-devpack -y - choco install netfx-4.0.3-devpack -y + + # Try .NET 4.0.3 but don't fail the build if it doesn't work + echo "Attempting to install .NET 4.0.3 developer pack..." + choco install netfx-4.0.3-devpack -y || echo "4.0.3 installation failed, continuing anyway..." + + # Show what we have available + echo "Checking installed targeting packs..." + if (Test-Path "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework") { + dir "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework" + } + continue-on-error: true - name: Restore NuGet packages run: nuget restore ./OptimizelySDK.NETFramework.sln - name: Build & strongly name assemblies From f351aa3e057fe0cb1d7ae18822ef12ee3ac8a9fe Mon Sep 17 00:00:00 2001 From: Md Junaed Hossain <169046794+junaed-optimizely@users.noreply.github.com> Date: Thu, 7 Aug 2025 19:32:37 +0600 Subject: [PATCH 09/16] [FSSDK-11731] more debug --- .github/workflows/csharp.yml | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/.github/workflows/csharp.yml b/.github/workflows/csharp.yml index e7286ff3..5e8e4040 100644 --- a/.github/workflows/csharp.yml +++ b/.github/workflows/csharp.yml @@ -46,8 +46,13 @@ jobs: uses: NuGet/setup-nuget@v1 - name: Install .NET Framework Developer Packs run: | - # Install .NET 4.5.2 developer pack (this should work) - choco install netfx-4.5.2-devpack -y + # Install .NET 4.5.1 developer pack (closest available to 4.5) + echo "Installing .NET 4.5.1 developer pack (closest to 4.5)..." + choco install netfx-4.5.1-devpack -y || echo "4.5.1 installation failed" + + # Also try 4.5.2 as additional fallback + echo "Installing .NET 4.5.2 developer pack as additional option..." + choco install netfx-4.5.2-devpack -y || echo "4.5.2 installation failed" # Try .NET 4.0.3 but don't fail the build if it doesn't work echo "Attempting to install .NET 4.0.3 developer pack..." @@ -58,11 +63,33 @@ jobs: if (Test-Path "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework") { dir "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework" } + + # Debug: Check what's actually inside v4.5 folder + echo "Checking v4.5 folder contents..." + if (Test-Path "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5") { + dir "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5" + } else { + echo "v4.5 folder does not exist!" + } + + # Debug: Check MSBuild targeting pack environment + echo "MSBuild targeting pack environment..." + echo "TargetFrameworkRootPath: $env:TargetFrameworkRootPath" + echo "MSBuildExtensionsPath32: $env:MSBuildExtensionsPath32" continue-on-error: true - name: Restore NuGet packages run: nuget restore ./OptimizelySDK.NETFramework.sln - name: Build & strongly name assemblies - run: msbuild /p:SignAssembly=true /p:AssemblyOriginatorKeyFile=$(pwd)/keypair.snk /p:Configuration=Release ./OptimizelySDK.NETFramework.sln + run: | + echo "=== MSBuild Diagnostics ===" + echo "Attempting build with verbose logging to diagnose targeting pack resolution..." + msbuild /p:SignAssembly=true /p:AssemblyOriginatorKeyFile=$(pwd)/keypair.snk /p:Configuration=Release /verbosity:diagnostic /flp:logfile=msbuild.log ./OptimizelySDK.NETFramework.sln + + echo "=== Build completed, checking for targeting pack errors in log ===" + if (Test-Path "msbuild.log") { + echo "Searching for targeting pack related messages..." + Select-String -Path "msbuild.log" -Pattern "(TargetFramework|Reference.*Assemblies|MSB3644|v4\.5)" | Select-Object -First 20 + } - name: Install & Run NUnit tests run: | nuget install NUnit.Console -Version 3.18.1 -DirectDownload -OutputDirectory . From 402fa193a61e39066bad40bddb4b8c9763f82d74 Mon Sep 17 00:00:00 2001 From: Md Junaed Hossain <169046794+junaed-optimizely@users.noreply.github.com> Date: Thu, 7 Aug 2025 20:12:16 +0600 Subject: [PATCH 10/16] [FSSDK-11731] different approach 2.0 --- .github/workflows/csharp.yml | 75 ++++++++++++++++++++---------------- 1 file changed, 42 insertions(+), 33 deletions(-) diff --git a/.github/workflows/csharp.yml b/.github/workflows/csharp.yml index 5e8e4040..450aaf80 100644 --- a/.github/workflows/csharp.yml +++ b/.github/workflows/csharp.yml @@ -44,52 +44,61 @@ jobs: uses: microsoft/setup-msbuild@v1 - name: Setup NuGet uses: NuGet/setup-nuget@v1 - - name: Install .NET Framework Developer Packs + - name: Download and Install .NET Framework Reference Assemblies run: | - # Install .NET 4.5.1 developer pack (closest available to 4.5) - echo "Installing .NET 4.5.1 developer pack (closest to 4.5)..." - choco install netfx-4.5.1-devpack -y || echo "4.5.1 installation failed" + # Create temp directory + New-Item -ItemType Directory -Path "temp_ref_assemblies" -Force - # Also try 4.5.2 as additional fallback - echo "Installing .NET 4.5.2 developer pack as additional option..." - choco install netfx-4.5.2-devpack -y || echo "4.5.2 installation failed" + # Download .NET 4.0 Reference Assemblies + echo "Downloading .NET 4.0 Reference Assemblies..." + Invoke-WebRequest -Uri "https://www.nuget.org/api/v2/package/Microsoft.NETFramework.ReferenceAssemblies.net40/1.0.3" -OutFile "temp_ref_assemblies/net40_ref.zip" - # Try .NET 4.0.3 but don't fail the build if it doesn't work - echo "Attempting to install .NET 4.0.3 developer pack..." - choco install netfx-4.0.3-devpack -y || echo "4.0.3 installation failed, continuing anyway..." + # Download .NET 4.5 Reference Assemblies + echo "Downloading .NET 4.5 Reference Assemblies..." + Invoke-WebRequest -Uri "https://www.nuget.org/api/v2/package/Microsoft.NETFramework.ReferenceAssemblies.net45/1.0.3" -OutFile "temp_ref_assemblies/net45_ref.zip" - # Show what we have available - echo "Checking installed targeting packs..." - if (Test-Path "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework") { - dir "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework" + # Extract and install .NET 4.0 + echo "Installing .NET 4.0 Reference Assemblies..." + Expand-Archive -Path "temp_ref_assemblies/net40_ref.zip" -DestinationPath "temp_ref_assemblies/net40" -Force + if (Test-Path "temp_ref_assemblies/net40/build/.NETFramework/v4.0") { + Copy-Item -Path "temp_ref_assemblies/net40/build/.NETFramework/v4.0" -Destination "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\" -Recurse -Force + echo "✓ .NET 4.0 Reference Assemblies installed" + } + + # Extract and install .NET 4.5 + echo "Installing .NET 4.5 Reference Assemblies..." + Expand-Archive -Path "temp_ref_assemblies/net45_ref.zip" -DestinationPath "temp_ref_assemblies/net45" -Force + if (Test-Path "temp_ref_assemblies/net45/build/.NETFramework/v4.5") { + Copy-Item -Path "temp_ref_assemblies/net45/build/.NETFramework/v4.5" -Destination "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\" -Recurse -Force + echo "✓ .NET 4.5 Reference Assemblies installed" } - # Debug: Check what's actually inside v4.5 folder - echo "Checking v4.5 folder contents..." - if (Test-Path "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5") { - dir "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5" + # Verify installations + echo "Verifying installations..." + if (Test-Path "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\mscorlib.dll") { + echo "✓ .NET 4.0 mscorlib.dll found" } else { - echo "v4.5 folder does not exist!" + echo "✗ .NET 4.0 mscorlib.dll missing" + } + if (Test-Path "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\mscorlib.dll") { + echo "✓ .NET 4.5 mscorlib.dll found" + } else { + echo "✗ .NET 4.5 mscorlib.dll missing" } - # Debug: Check MSBuild targeting pack environment - echo "MSBuild targeting pack environment..." - echo "TargetFrameworkRootPath: $env:TargetFrameworkRootPath" - echo "MSBuildExtensionsPath32: $env:MSBuildExtensionsPath32" + # Show what we have available now + echo "Final targeting pack listing..." + if (Test-Path "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework") { + dir "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework" + } + + # Cleanup + Remove-Item -Path "temp_ref_assemblies" -Recurse -Force continue-on-error: true - name: Restore NuGet packages run: nuget restore ./OptimizelySDK.NETFramework.sln - name: Build & strongly name assemblies - run: | - echo "=== MSBuild Diagnostics ===" - echo "Attempting build with verbose logging to diagnose targeting pack resolution..." - msbuild /p:SignAssembly=true /p:AssemblyOriginatorKeyFile=$(pwd)/keypair.snk /p:Configuration=Release /verbosity:diagnostic /flp:logfile=msbuild.log ./OptimizelySDK.NETFramework.sln - - echo "=== Build completed, checking for targeting pack errors in log ===" - if (Test-Path "msbuild.log") { - echo "Searching for targeting pack related messages..." - Select-String -Path "msbuild.log" -Pattern "(TargetFramework|Reference.*Assemblies|MSB3644|v4\.5)" | Select-Object -First 20 - } + run: msbuild /p:SignAssembly=true /p:AssemblyOriginatorKeyFile=$(pwd)/keypair.snk /p:Configuration=Release ./OptimizelySDK.NETFramework.sln - name: Install & Run NUnit tests run: | nuget install NUnit.Console -Version 3.18.1 -DirectDownload -OutputDirectory . From 038b4964feb00357a1402c6df50fac9aa7090b0a Mon Sep 17 00:00:00 2001 From: Md Junaed Hossain <169046794+junaed-optimizely@users.noreply.github.com> Date: Thu, 7 Aug 2025 20:15:39 +0600 Subject: [PATCH 11/16] [FSSDK-11731] pr condition change on action --- .github/workflows/csharp.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/csharp.yml b/.github/workflows/csharp.yml index 450aaf80..c768d2d2 100644 --- a/.github/workflows/csharp.yml +++ b/.github/workflows/csharp.yml @@ -5,8 +5,6 @@ on: branches: [ master ] pull_request: branches: [ master ] - types: [ opened, synchronize, reopened, ready_for_review ] - jobs: lintCodebase: name: Lint Codebase if Not Draft From 7a336effbe31409108340119dbcb7f313313a490 Mon Sep 17 00:00:00 2001 From: Md Junaed Hossain <169046794+junaed-optimizely@users.noreply.github.com> Date: Thu, 7 Aug 2025 20:23:20 +0600 Subject: [PATCH 12/16] [FSSDK-11731] going back to old --- .github/workflows/csharp.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/csharp.yml b/.github/workflows/csharp.yml index c768d2d2..450aaf80 100644 --- a/.github/workflows/csharp.yml +++ b/.github/workflows/csharp.yml @@ -5,6 +5,8 @@ on: branches: [ master ] pull_request: branches: [ master ] + types: [ opened, synchronize, reopened, ready_for_review ] + jobs: lintCodebase: name: Lint Codebase if Not Draft From 353f1c01f9600ac8af98af96c28629b12788e7b8 Mon Sep 17 00:00:00 2001 From: Md Junaed Hossain <169046794+junaed-optimizely@users.noreply.github.com> Date: Thu, 7 Aug 2025 20:58:00 +0600 Subject: [PATCH 13/16] [FSSDK-11731] release action update --- .github/workflows/csharp.yml | 19 ----------------- .github/workflows/csharp_release.yml | 31 ++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 19 deletions(-) diff --git a/.github/workflows/csharp.yml b/.github/workflows/csharp.yml index 450aaf80..42d09c08 100644 --- a/.github/workflows/csharp.yml +++ b/.github/workflows/csharp.yml @@ -73,25 +73,6 @@ jobs: echo "✓ .NET 4.5 Reference Assemblies installed" } - # Verify installations - echo "Verifying installations..." - if (Test-Path "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\mscorlib.dll") { - echo "✓ .NET 4.0 mscorlib.dll found" - } else { - echo "✗ .NET 4.0 mscorlib.dll missing" - } - if (Test-Path "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\mscorlib.dll") { - echo "✓ .NET 4.5 mscorlib.dll found" - } else { - echo "✗ .NET 4.5 mscorlib.dll missing" - } - - # Show what we have available now - echo "Final targeting pack listing..." - if (Test-Path "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework") { - dir "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework" - } - # Cleanup Remove-Item -Path "temp_ref_assemblies" -Recurse -Force continue-on-error: true diff --git a/.github/workflows/csharp_release.yml b/.github/workflows/csharp_release.yml index 0d87d228..35ad87d9 100644 --- a/.github/workflows/csharp_release.yml +++ b/.github/workflows/csharp_release.yml @@ -41,6 +41,37 @@ jobs: uses: microsoft/setup-msbuild@v2 - name: Setup NuGet uses: nuget/setup-nuget@v2 + - name: Download and Install .NET Framework Reference Assemblies + run: | + # Create temp directory + New-Item -ItemType Directory -Path "temp_ref_assemblies" -Force + + # Download .NET 4.0 Reference Assemblies + echo "Downloading .NET 4.0 Reference Assemblies..." + Invoke-WebRequest -Uri "https://www.nuget.org/api/v2/package/Microsoft.NETFramework.ReferenceAssemblies.net40/1.0.3" -OutFile "temp_ref_assemblies/net40_ref.zip" + + # Download .NET 4.5 Reference Assemblies + echo "Downloading .NET 4.5 Reference Assemblies..." + Invoke-WebRequest -Uri "https://www.nuget.org/api/v2/package/Microsoft.NETFramework.ReferenceAssemblies.net45/1.0.3" -OutFile "temp_ref_assemblies/net45_ref.zip" + + # Extract and install .NET 4.0 + echo "Installing .NET 4.0 Reference Assemblies..." + Expand-Archive -Path "temp_ref_assemblies/net40_ref.zip" -DestinationPath "temp_ref_assemblies/net40" -Force + if (Test-Path "temp_ref_assemblies/net40/build/.NETFramework/v4.0") { + Copy-Item -Path "temp_ref_assemblies/net40/build/.NETFramework/v4.0" -Destination "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\" -Recurse -Force + echo "✓ .NET 4.0 Reference Assemblies installed" + } + + # Extract and install .NET 4.5 + echo "Installing .NET 4.5 Reference Assemblies..." + Expand-Archive -Path "temp_ref_assemblies/net45_ref.zip" -DestinationPath "temp_ref_assemblies/net45" -Force + if (Test-Path "temp_ref_assemblies/net45/build/.NETFramework/v4.5") { + Copy-Item -Path "temp_ref_assemblies/net45/build/.NETFramework/v4.5" -Destination "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\" -Recurse -Force + echo "✓ .NET 4.5 Reference Assemblies installed" + } + + # Cleanup + Remove-Item -Path "temp_ref_assemblies" -Recurse -Force - name: Restore NuGet packages run: nuget restore ./OptimizelySDK.NETFramework.sln - name: Build and strongly name assemblies From 438e9fbf8f60930d180b57a4d91decfb0f488fa8 Mon Sep 17 00:00:00 2001 From: Md Junaed Hossain <169046794+junaed-optimizely@users.noreply.github.com> Date: Thu, 7 Aug 2025 21:00:06 +0600 Subject: [PATCH 14/16] [FSSDK-11731] cleanup --- .github/workflows/csharp.yml | 2 +- .github/workflows/csharp_release.yml | 2 +- .github/workflows/sonarqube.yml | 45 ---------------------------- 3 files changed, 2 insertions(+), 47 deletions(-) delete mode 100644 .github/workflows/sonarqube.yml diff --git a/.github/workflows/csharp.yml b/.github/workflows/csharp.yml index 42d09c08..829255d9 100644 --- a/.github/workflows/csharp.yml +++ b/.github/workflows/csharp.yml @@ -29,7 +29,7 @@ jobs: netFrameworksAndUnitTest: name: Build Framework & Run Unit Tests needs: [ lintCodebase ] - runs-on: windows-2022 # required version for Framework 4.0 + runs-on: windows-2022 env: REPO_SLUG: ${{ github.repository }} BUILD_NUMBER: ${{ github.run_id }} diff --git a/.github/workflows/csharp_release.yml b/.github/workflows/csharp_release.yml index 35ad87d9..e636817c 100644 --- a/.github/workflows/csharp_release.yml +++ b/.github/workflows/csharp_release.yml @@ -31,7 +31,7 @@ jobs: buildFrameworkVersions: name: Build Framework versions needs: [ variables ] - runs-on: windows-2022 # required version for Framework 4.0 + runs-on: windows-2022 steps: - name: Checkout code uses: actions/checkout@v4 diff --git a/.github/workflows/sonarqube.yml b/.github/workflows/sonarqube.yml deleted file mode 100644 index a902f99e..00000000 --- a/.github/workflows/sonarqube.yml +++ /dev/null @@ -1,45 +0,0 @@ -name: SonarQube -on: - push: - branches: - - dsier/sonarqube -jobs: - build: - name: Build - runs-on: windows-2022 - steps: - - name: Set up JDK 11 - uses: actions/setup-java@v4 - with: - java-version: 1.11 - - uses: actions/checkout@v4 - with: - fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis - - name: Cache SonarCloud packages - uses: actions/cache@v4 - with: - path: ~\sonar\cache - key: ${{ runner.os }}-sonar - restore-keys: ${{ runner.os }}-sonar - - name: Cache SonarCloud scanner - id: cache-sonar-scanner - uses: actions/cache@v4 - with: - path: .\.sonar\scanner - key: ${{ runner.os }}-sonar-scanner - restore-keys: ${{ runner.os }}-sonar-scanner - - name: Install SonarCloud scanner - if: steps.cache-sonar-scanner.outputs.cache-hit != 'true' - shell: powershell - run: | - New-Item -Path .\.sonar\scanner -ItemType Directory - dotnet tool update dotnet-sonarscanner --tool-path .\.sonar\scanner - - name: Build and analyze - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any - SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - shell: powershell - run: | - .\.sonar\scanner\dotnet-sonarscanner begin /k:"csharpsdk" /o:"optidevx" /d:sonar.login="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" - dotnet build .\OptimizelySDK\ - .\.sonar\scanner\dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN From 28f79f376fb70cb4254fd51db6f1572e5814851e Mon Sep 17 00:00:00 2001 From: Md Junaed Hossain <169046794+junaed-optimizely@users.noreply.github.com> Date: Thu, 7 Aug 2025 23:56:28 +0600 Subject: [PATCH 15/16] [FSSDK-11731] continue on error removal --- .github/workflows/csharp.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/csharp.yml b/.github/workflows/csharp.yml index 829255d9..c2f4b955 100644 --- a/.github/workflows/csharp.yml +++ b/.github/workflows/csharp.yml @@ -75,7 +75,6 @@ jobs: # Cleanup Remove-Item -Path "temp_ref_assemblies" -Recurse -Force - continue-on-error: true - name: Restore NuGet packages run: nuget restore ./OptimizelySDK.NETFramework.sln - name: Build & strongly name assemblies From 84e842751c4b72b382b21ed9c830631ae111c782 Mon Sep 17 00:00:00 2001 From: Md Junaed Hossain <169046794+junaed-optimizely@users.noreply.github.com> Date: Fri, 8 Aug 2025 15:50:19 +0600 Subject: [PATCH 16/16] [FSSDK-11731] relative path approach --- .github/workflows/csharp.yml | 31 ++++++++++++++++------------ .github/workflows/csharp_release.yml | 31 ++++++++++++++++------------ 2 files changed, 36 insertions(+), 26 deletions(-) diff --git a/.github/workflows/csharp.yml b/.github/workflows/csharp.yml index c2f4b955..300016b8 100644 --- a/.github/workflows/csharp.yml +++ b/.github/workflows/csharp.yml @@ -44,7 +44,7 @@ jobs: uses: microsoft/setup-msbuild@v1 - name: Setup NuGet uses: NuGet/setup-nuget@v1 - - name: Download and Install .NET Framework Reference Assemblies + - name: Download and Extract .NET Framework Reference Assemblies run: | # Create temp directory New-Item -ItemType Directory -Path "temp_ref_assemblies" -Force @@ -57,33 +57,38 @@ jobs: echo "Downloading .NET 4.5 Reference Assemblies..." Invoke-WebRequest -Uri "https://www.nuget.org/api/v2/package/Microsoft.NETFramework.ReferenceAssemblies.net45/1.0.3" -OutFile "temp_ref_assemblies/net45_ref.zip" - # Extract and install .NET 4.0 - echo "Installing .NET 4.0 Reference Assemblies..." + # Extract .NET 4.0 Reference Assemblies + echo "Extracting .NET 4.0 Reference Assemblies..." Expand-Archive -Path "temp_ref_assemblies/net40_ref.zip" -DestinationPath "temp_ref_assemblies/net40" -Force if (Test-Path "temp_ref_assemblies/net40/build/.NETFramework/v4.0") { - Copy-Item -Path "temp_ref_assemblies/net40/build/.NETFramework/v4.0" -Destination "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\" -Recurse -Force - echo "✓ .NET 4.0 Reference Assemblies installed" + echo "✓ .NET 4.0 Reference Assemblies extracted to workspace" } - # Extract and install .NET 4.5 - echo "Installing .NET 4.5 Reference Assemblies..." + # Extract .NET 4.5 Reference Assemblies + echo "Extracting .NET 4.5 Reference Assemblies..." Expand-Archive -Path "temp_ref_assemblies/net45_ref.zip" -DestinationPath "temp_ref_assemblies/net45" -Force if (Test-Path "temp_ref_assemblies/net45/build/.NETFramework/v4.5") { - Copy-Item -Path "temp_ref_assemblies/net45/build/.NETFramework/v4.5" -Destination "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\" -Recurse -Force - echo "✓ .NET 4.5 Reference Assemblies installed" + echo "✓ .NET 4.5 Reference Assemblies extracted to workspace" } - - # Cleanup - Remove-Item -Path "temp_ref_assemblies" -Recurse -Force - name: Restore NuGet packages run: nuget restore ./OptimizelySDK.NETFramework.sln - name: Build & strongly name assemblies - run: msbuild /p:SignAssembly=true /p:AssemblyOriginatorKeyFile=$(pwd)/keypair.snk /p:Configuration=Release ./OptimizelySDK.NETFramework.sln + run: | + # Build with workspace-relative reference assembly paths + $Net40RefPath = "$(pwd)\temp_ref_assemblies\net40\build\.NETFramework\v4.0" + $Net45RefPath = "$(pwd)\temp_ref_assemblies\net45\build\.NETFramework\v4.5" + + echo "Using .NET 4.0 Reference Assemblies from: $Net40RefPath" + echo "Using .NET 4.5 Reference Assemblies from: $Net45RefPath" + + msbuild /p:SignAssembly=true /p:AssemblyOriginatorKeyFile=$(pwd)/keypair.snk /p:Configuration=Release /p:FrameworkPathOverride="$Net45RefPath" ./OptimizelySDK.NETFramework.sln - name: Install & Run NUnit tests run: | nuget install NUnit.Console -Version 3.18.1 -DirectDownload -OutputDirectory . # https://docs.nunit.org/articles/nunit/running-tests/Console-Command-Line.html ./NUnit.ConsoleRunner.3.18.1\tools\nunit3-console.exe /timeout 10000 /process Separate ./OptimizelySDK.Tests/bin/Release/OptimizelySDK.Tests.dll + - name: Cleanup reference assemblies + run: Remove-Item -Path "temp_ref_assemblies" -Recurse -Force netStandard16: name: Build Standard 1.6 diff --git a/.github/workflows/csharp_release.yml b/.github/workflows/csharp_release.yml index e636817c..f4c1736c 100644 --- a/.github/workflows/csharp_release.yml +++ b/.github/workflows/csharp_release.yml @@ -41,7 +41,7 @@ jobs: uses: microsoft/setup-msbuild@v2 - name: Setup NuGet uses: nuget/setup-nuget@v2 - - name: Download and Install .NET Framework Reference Assemblies + - name: Download and Extract .NET Framework Reference Assemblies run: | # Create temp directory New-Item -ItemType Directory -Path "temp_ref_assemblies" -Force @@ -54,28 +54,33 @@ jobs: echo "Downloading .NET 4.5 Reference Assemblies..." Invoke-WebRequest -Uri "https://www.nuget.org/api/v2/package/Microsoft.NETFramework.ReferenceAssemblies.net45/1.0.3" -OutFile "temp_ref_assemblies/net45_ref.zip" - # Extract and install .NET 4.0 - echo "Installing .NET 4.0 Reference Assemblies..." + # Extract .NET 4.0 Reference Assemblies + echo "Extracting .NET 4.0 Reference Assemblies..." Expand-Archive -Path "temp_ref_assemblies/net40_ref.zip" -DestinationPath "temp_ref_assemblies/net40" -Force if (Test-Path "temp_ref_assemblies/net40/build/.NETFramework/v4.0") { - Copy-Item -Path "temp_ref_assemblies/net40/build/.NETFramework/v4.0" -Destination "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\" -Recurse -Force - echo "✓ .NET 4.0 Reference Assemblies installed" + echo "✓ .NET 4.0 Reference Assemblies extracted to workspace" } - # Extract and install .NET 4.5 - echo "Installing .NET 4.5 Reference Assemblies..." + # Extract .NET 4.5 Reference Assemblies + echo "Extracting .NET 4.5 Reference Assemblies..." Expand-Archive -Path "temp_ref_assemblies/net45_ref.zip" -DestinationPath "temp_ref_assemblies/net45" -Force if (Test-Path "temp_ref_assemblies/net45/build/.NETFramework/v4.5") { - Copy-Item -Path "temp_ref_assemblies/net45/build/.NETFramework/v4.5" -Destination "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\" -Recurse -Force - echo "✓ .NET 4.5 Reference Assemblies installed" + echo "✓ .NET 4.5 Reference Assemblies extracted to workspace" } - - # Cleanup - Remove-Item -Path "temp_ref_assemblies" -Recurse -Force - name: Restore NuGet packages run: nuget restore ./OptimizelySDK.NETFramework.sln - name: Build and strongly name assemblies - run: msbuild /p:SignAssembly=true /p:AssemblyOriginatorKeyFile=$(pwd)/keypair.snk /p:Configuration=Release ./OptimizelySDK.NETFramework.sln + run: | + # Build with workspace-relative reference assembly paths + $Net40RefPath = "$(pwd)\temp_ref_assemblies\net40\build\.NETFramework\v4.0" + $Net45RefPath = "$(pwd)\temp_ref_assemblies\net45\build\.NETFramework\v4.5" + + echo "Using .NET 4.0 Reference Assemblies from: $Net40RefPath" + echo "Using .NET 4.5 Reference Assemblies from: $Net45RefPath" + + msbuild /p:SignAssembly=true /p:AssemblyOriginatorKeyFile=$(pwd)/keypair.snk /p:Configuration=Release /p:FrameworkPathOverride="$Net45RefPath" ./OptimizelySDK.NETFramework.sln + - name: Cleanup reference assemblies + run: Remove-Item -Path "temp_ref_assemblies" -Recurse -Force - name: Upload Framework artifacts uses: actions/upload-artifact@v4 with: