From b26603744bb1e0458b831505708b505ec710487f Mon Sep 17 00:00:00 2001 From: Romfos Date: Mon, 5 Jan 2026 19:03:46 +0100 Subject: [PATCH 1/9] Drop AppVeyor in favor of GitHub Actions --- .github/workflows/release.yml | 45 +++++++++ Castle.Core.slnx | 4 +- README.md | 10 +- appveyor.yml | 91 ------------------- build.cmd | 17 ---- build.sh | 66 -------------- buildscripts/build.cmd | 55 ----------- buildscripts/common.props | 7 +- src/Castle.Core/Castle.Core.csproj | 2 - ...ervices.Logging.EventLogIntegration.csproj | 2 - ...le.Services.Logging.NLogIntegration.csproj | 2 - ...Services.Logging.SerilogIntegration.csproj | 2 - ...Services.Logging.log4netIntegration.csproj | 2 - 13 files changed, 51 insertions(+), 254 deletions(-) create mode 100644 .github/workflows/release.yml delete mode 100644 appveyor.yml delete mode 100644 build.cmd delete mode 100755 build.sh delete mode 100644 buildscripts/build.cmd diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000000..941fe14e5f --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,45 @@ +name: Release +on: + workflow_dispatch: + inputs: + version: + description: "Nuget package version" + required: true + type: string + publish: + description: "Publish to nuget" + type: boolean + required: true + default: false +run-name: Release ${{ inputs.Version }} + +jobs: + build: + runs-on: windows-latest + steps: + - name: Checkout + uses: actions/checkout@v6 + + - name: Setup .NET + uses: actions/setup-dotnet@v5 + with: + dotnet-version: 10.0.x + + - name: Build package + run: dotnet pack ./Castle.Core.slnx -p:Version=${{ inputs.Version }} -o ./build -p:CI=true + + - name: Make explicit versions for nuget packages + run: dotnet run --project .\tools\Explicit.NuGet.Versions\Explicit.NuGet.Versions.csproj ".\build" "castle." + + - name: Publish to nuget.org + if: inputs.publish == 'true' + run: dotnet nuget push ./build/*.nupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json + + - name: Upload packages + uses: actions/upload-artifact@v5 + with: + name: packages + path: | + build/*.nupkg + build/*.snupkg + retention-days: 30 \ No newline at end of file diff --git a/Castle.Core.slnx b/Castle.Core.slnx index 88133c4241..ffb870dd9c 100644 --- a/Castle.Core.slnx +++ b/Castle.Core.slnx @@ -3,9 +3,6 @@ - - - @@ -14,6 +11,7 @@ + diff --git a/README.md b/README.md index eb49dc89df..184d45f906 100644 --- a/README.md +++ b/README.md @@ -32,16 +32,10 @@ Running the unit tests additionally requires the .NET Framework 4.6.2+ and the . |-----------------|------------| | Windows & Linux | [Preview Feed](https://ci.appveyor.com/nuget/core-0mhe40ifodk8) -### On Windows +### On Windows/linux/macOS ``` -build.cmd -``` - -### On Linux - -``` -./build.sh +dotnet build Castle.Core.slnx ``` :information_source: **Mono runtime support:** We used to run tests on the Mono 6.0 runtime, but stopped doing so as the project has been deprecated. See the official announcement on [the Mono homepage](https://www.mono-project.com/). diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index a9a39ed10e..0000000000 --- a/appveyor.yml +++ /dev/null @@ -1,91 +0,0 @@ -image: -- Visual Studio 2022 -- Ubuntu2204 - - -# ---------------- -# ALL BUILD JOBS -# ---------------- -skip_tags: false -test: off - - -for: -- # ----------------- - # LINUX BUILD JOB - # ----------------- - matrix: - only: - - image: Ubuntu2204 - - # install .NET 10 SDK - install: - - curl -L https://dot.net/v1/dotnet-install.sh -o dotnet-install.sh - - chmod +x ./dotnet-install.sh - - sudo ./dotnet-install.sh --channel 10.0 --install-dir /usr/share/dotnet - - # build and run tests - build_script: - - uname -a - - ./build.sh - - # upload test results - after_build: - - find "$APPVEYOR_BUILD_FOLDER" -type f -name '*TestResults.xml' -print0 | xargs -0 -I '{}' curl -F 'file=@{}' "https://ci.appveyor.com/api/testresults/nunit3/$APPVEYOR_JOB_ID" - - # deployment is handled exclusively by the Windows build job (below) - deploy: off - - -- # ------------------- - # WINDOWS BUILD JOB - # ------------------- - matrix: - only: - - image: Visual Studio 2022 - - # update AppVeyor build version; this matters for deployments - init: - - ps: | - if ($env:APPVEYOR_REPO_TAG -eq "true") - { - Update-AppveyorBuild -Version ($env:APPVEYOR_REPO_TAG_NAME).TrimStart("v") - } - - # install .NET 10 SDK - install: - - cmd: choco install dotnet-10.0-sdk - - # build and run tests - build_script: - - cmd: build.cmd - - # upload test results - after_build: - - ps: | - $wc = New-Object System.Net.WebClient - $wc.UploadFile("https://ci.appveyor.com/api/testresults/nunit/$($env:APPVEYOR_JOB_ID)", (Resolve-Path "Net80TestResults.xml")) - $wc.UploadFile("https://ci.appveyor.com/api/testresults/nunit/$($env:APPVEYOR_JOB_ID)", (Resolve-Path "Net80WeakNamedTestResults.xml")) - $wc.UploadFile("https://ci.appveyor.com/api/testresults/nunit/$($env:APPVEYOR_JOB_ID)", (Resolve-Path "Net90TestResults.xml")) - $wc.UploadFile("https://ci.appveyor.com/api/testresults/nunit/$($env:APPVEYOR_JOB_ID)", (Resolve-Path "Net90WeakNamedTestResults.xml")) - $wc.UploadFile("https://ci.appveyor.com/api/testresults/nunit/$($env:APPVEYOR_JOB_ID)", (Resolve-Path "DesktopClrTestResults.xml")) - $wc.UploadFile("https://ci.appveyor.com/api/testresults/nunit/$($env:APPVEYOR_JOB_ID)", (Resolve-Path "DesktopClrWeakNamedTestResults.xml")) - - # push packages to NuGet on tag builds - on_success: - - ps: | - if ($env:APPVEYOR_REPO_TAG -eq "true") - { - nuget push ".\build\Castle.Core.${env:APPVEYOR_BUILD_VERSION}.nupkg" -ApiKey $env:NUGET_API_KEY -Source https://api.nuget.org/v3/index.json - nuget push ".\build\Castle.Core-log4net.${env:APPVEYOR_BUILD_VERSION}.nupkg" -ApiKey $env:NUGET_API_KEY -Source https://api.nuget.org/v3/index.json - nuget push ".\build\Castle.Core-NLog.${env:APPVEYOR_BUILD_VERSION}.nupkg" -ApiKey $env:NUGET_API_KEY -Source https://api.nuget.org/v3/index.json - nuget push ".\build\Castle.Core-Serilog.${env:APPVEYOR_BUILD_VERSION}.nupkg" -ApiKey $env:NUGET_API_KEY -Source https://api.nuget.org/v3/index.json - nuget push ".\build\Castle.Core-DiagnosticsLogger.${env:APPVEYOR_BUILD_VERSION}.nupkg" -ApiKey $env:NUGET_API_KEY -Source https://api.nuget.org/v3/index.json - } - - # upload packages to AppVeyor - artifacts: - - path: build\*.nupkg - name: library - - path: build\*.snupkg - name: symbols \ No newline at end of file diff --git a/build.cmd b/build.cmd deleted file mode 100644 index 119de998ee..0000000000 --- a/build.cmd +++ /dev/null @@ -1,17 +0,0 @@ -@ECHO OFF -REM **************************************************************************** -REM Copyright 2004-2021 Castle Project - http://www.castleproject.org/ -REM Licensed under the Apache License, Version 2.0 (the "License"); -REM you may not use this file except in compliance with the License. -REM You may obtain a copy of the License at -REM -REM http://www.apache.org/licenses/LICENSE-2.0 -REM -REM Unless required by applicable law or agreed to in writing, software -REM distributed under the License is distributed on an "AS IS" BASIS, -REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -REM See the License for the specific language governing permissions and -REM limitations under the License. -REM **************************************************************************** - -@call buildscripts\build.cmd %* diff --git a/build.sh b/build.sh deleted file mode 100755 index a091126b7b..0000000000 --- a/build.sh +++ /dev/null @@ -1,66 +0,0 @@ -#!/bin/bash -# **************************************************************************** -# Copyright 2004-2025 Castle Project - http://www.castleproject.org/ -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# **************************************************************************** -shopt -s expand_aliases - -dotnet --list-sdks - -echo --------------------------- -echo Build -echo --------------------------- - -dotnet build ./Castle.Core.slnx --configuration Release --tl:off - -echo --------------------------- -echo Running NET8.0 Tests -echo --------------------------- - -dotnet test ./src/Castle.Core.Tests -f net8.0 -c Release --no-build -- NUnit.TestOutputXml="$PWD" NUnit.TestOutputXmlFileName="Net80TestResults" -dotnet test ./src/Castle.Core.Tests.WeakNamed -f net8.0 -c Release --no-build -- NUnit.TestOutputXml="$PWD" NUnit.TestOutputXmlFileName="Net80WeakNamedTestResults" - -# Ensure that all test runs produced a protocol file: -if [[ !( -f Net80TestResults.xml && - -f Net80WeakNamedTestResults.xml ) ]]; then - echo "Incomplete test results. Some test runs might not have terminated properly. Failing the build." - exit 1 -fi - -NET80_FAILCOUNT=$(grep -F "One or more child tests had errors" Net80TestResults.xml Net80WeakNamedTestResults.xml | wc -l) -if [ $NET80_FAILCOUNT -ne 0 ] -then - echo "Net8.0 Tests have failed, failing the build" - exit 1 -fi - -echo --------------------------- -echo Running NET9.0 Tests -echo --------------------------- - -dotnet test ./src/Castle.Core.Tests -f net9.0 -c Release --no-build -- NUnit.TestOutputXml="$PWD" NUnit.TestOutputXmlFileName="Net90TestResults" -dotnet test ./src/Castle.Core.Tests.WeakNamed -f net9.0 -c Release --no-build -- NUnit.TestOutputXml="$PWD" NUnit.TestOutputXmlFileName="Net90WeakNamedTestResults" - -# Ensure that all test runs produced a protocol file: -if [[ !( -f Net90TestResults.xml && - -f Net90WeakNamedTestResults.xml ) ]]; then - echo "Incomplete test results. Some test runs might not have terminated properly. Failing the build." - exit 1 -fi - -NET90_FAILCOUNT=$(grep -F "One or more child tests had errors" Net90TestResults.xml Net90WeakNamedTestResults.xml | wc -l) -if [ $NET90_FAILCOUNT -ne 0 ] -then - echo "Net9.0 Tests have failed, failing the build" - exit 1 -fi diff --git a/buildscripts/build.cmd b/buildscripts/build.cmd deleted file mode 100644 index 38dd052309..0000000000 --- a/buildscripts/build.cmd +++ /dev/null @@ -1,55 +0,0 @@ -@ECHO OFF -REM **************************************************************************** -REM Copyright 2004-2025 Castle Project - http://www.castleproject.org/ -REM Licensed under the Apache License, Version 2.0 (the "License"); -REM you may not use this file except in compliance with the License. -REM You may obtain a copy of the License at -REM -REM http://www.apache.org/licenses/LICENSE-2.0 -REM -REM Unless required by applicable law or agreed to in writing, software -REM distributed under the License is distributed on an "AS IS" BASIS, -REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -REM See the License for the specific language governing permissions and -REM limitations under the License. -REM **************************************************************************** - -if "%1" == "" goto no_config -if "%1" NEQ "" goto set_config - -:set_config -SET Configuration=%1 -GOTO build - -:no_config -SET Configuration=Release -GOTO build - -:build -dotnet build ./tools/Explicit.NuGet.Versions/Explicit.NuGet.Versions.slnx -dotnet build --configuration %Configuration% || exit /b 1 -.\tools\Explicit.NuGet.Versions\build\nev.exe ".\build" "castle." -GOTO test - -:test - -echo -------------------- -echo Running NET462 Tests -echo -------------------- - -dotnet test src\Castle.Core.Tests -f net462 -c %Configuration% --no-build -- NUnit.TestOutputXml="%CD%" NUnit.TestOutputXmlFileName="DesktopClrTestResults" || exit /b 1 -dotnet test src\Castle.Core.Tests.WeakNamed -f net462 -c %Configuration% --no-build -- NUnit.TestOutputXml="%CD%" NUnit.TestOutputXmlFileName="DesktopClrWeakNamedTestResults" || exit /b 1 - -echo --------------------------- -echo Running NET8.0 Tests -echo --------------------------- - -dotnet test src\Castle.Core.Tests -f net8.0 -c %Configuration% --no-build -- NUnit.TestOutputXml="%CD%" NUnit.TestOutputXmlFileName="Net80TestResults" || exit /b 1 -dotnet test src\Castle.Core.Tests.WeakNamed -f net8.0 -c %Configuration% --no-build -- NUnit.TestOutputXml="%CD%" NUnit.TestOutputXmlFileName="Net80WeakNamedTestResults" || exit /b 1 - -echo --------------------------- -echo Running NET9.0 Tests -echo --------------------------- - -dotnet test src\Castle.Core.Tests -f net9.0 -c %Configuration% --no-build -- NUnit.TestOutputXml="%CD%" NUnit.TestOutputXmlFileName="Net90TestResults" || exit /b 1 -dotnet test src\Castle.Core.Tests.WeakNamed -f net9.0 -c %Configuration% --no-build -- NUnit.TestOutputXml="%CD%" NUnit.TestOutputXmlFileName="Net90WeakNamedTestResults" || exit /b 1 \ No newline at end of file diff --git a/buildscripts/common.props b/buildscripts/common.props index 69df1b76a6..fb6a940fd3 100644 --- a/buildscripts/common.props +++ b/buildscripts/common.props @@ -8,7 +8,7 @@ git https://github.com/castleproject/Core 0.0.0 - $(APPVEYOR_BUILD_VERSION) + $(Version) $(BuildVersion.Split('.')[0]) $(BuildVersion.Split('-')[0]) true @@ -27,9 +27,6 @@ http://www.castleproject.org/img/castle-logo.png castle-logo.png false - $(BuildVersion) - true - false $([System.DateTime]::Now.ToString("yyyy")) Copyright (c) 2004-$(CurrentYear) Castle Project - http://www.castleproject.org/ . @@ -39,6 +36,8 @@ true true + true + snupkg diff --git a/src/Castle.Core/Castle.Core.csproj b/src/Castle.Core/Castle.Core.csproj index b6d3999817..81a6c892b5 100644 --- a/src/Castle.Core/Castle.Core.csproj +++ b/src/Castle.Core/Castle.Core.csproj @@ -9,8 +9,6 @@ Castle.Core - True - ../../build/ Castle.Core Castle Castle Core diff --git a/src/Castle.Services.Logging.EventLogIntegration/Castle.Services.Logging.EventLogIntegration.csproj b/src/Castle.Services.Logging.EventLogIntegration/Castle.Services.Logging.EventLogIntegration.csproj index 6e25ba11a4..bf4495c3b5 100644 --- a/src/Castle.Services.Logging.EventLogIntegration/Castle.Services.Logging.EventLogIntegration.csproj +++ b/src/Castle.Services.Logging.EventLogIntegration/Castle.Services.Logging.EventLogIntegration.csproj @@ -8,8 +8,6 @@ Castle.Core-DiagnosticsLogger - True - ../../build/ Castle.Services.Logging.EventLogIntegration Castle.Services.Logging.EventLogIntegration Castle Windows EventLog integration diff --git a/src/Castle.Services.Logging.NLogIntegration/Castle.Services.Logging.NLogIntegration.csproj b/src/Castle.Services.Logging.NLogIntegration/Castle.Services.Logging.NLogIntegration.csproj index 5cca724349..c68bd0d1cc 100644 --- a/src/Castle.Services.Logging.NLogIntegration/Castle.Services.Logging.NLogIntegration.csproj +++ b/src/Castle.Services.Logging.NLogIntegration/Castle.Services.Logging.NLogIntegration.csproj @@ -8,8 +8,6 @@ Castle.Core-NLog - True - ../../build/ Castle.Services.Logging.NLogIntegration Castle.Services.Logging.NLogIntegration Castle NLog integration diff --git a/src/Castle.Services.Logging.SerilogIntegration/Castle.Services.Logging.SerilogIntegration.csproj b/src/Castle.Services.Logging.SerilogIntegration/Castle.Services.Logging.SerilogIntegration.csproj index 8d3e790f87..2e6342a29a 100644 --- a/src/Castle.Services.Logging.SerilogIntegration/Castle.Services.Logging.SerilogIntegration.csproj +++ b/src/Castle.Services.Logging.SerilogIntegration/Castle.Services.Logging.SerilogIntegration.csproj @@ -8,8 +8,6 @@ Castle.Core-Serilog - True - ../../build/ Castle.Services.Logging.SerilogIntegration Castle.Services.Logging.SerilogIntegration Castle Serilog integration diff --git a/src/Castle.Services.Logging.log4netIntegration/Castle.Services.Logging.log4netIntegration.csproj b/src/Castle.Services.Logging.log4netIntegration/Castle.Services.Logging.log4netIntegration.csproj index e2a50dff29..73c8cd72d7 100644 --- a/src/Castle.Services.Logging.log4netIntegration/Castle.Services.Logging.log4netIntegration.csproj +++ b/src/Castle.Services.Logging.log4netIntegration/Castle.Services.Logging.log4netIntegration.csproj @@ -8,8 +8,6 @@ Castle.Core-log4net - True - ../../build/ Castle.Services.Logging.Log4netIntegration Castle.Services.Logging.Log4netIntegration Castle log4net integration From 93f92258009d19dc9bffb81f5e4ac8f7ea04cd35 Mon Sep 17 00:00:00 2001 From: Julian Verdurmen <5808377+304NotModified@users.noreply.github.com> Date: Tue, 10 Mar 2026 00:22:18 +0100 Subject: [PATCH 2/9] Update upload-artifact, update Push to NuGet.org with trusted publishing --- .github/workflows/release.yml | 38 +++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 941fe14e5f..c54c08ce42 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,19 +3,22 @@ on: workflow_dispatch: inputs: version: - description: "Nuget package version" + description: Nuget package version required: true type: string publish: - description: "Publish to nuget" + description: Publish to nuget type: boolean required: true default: false run-name: Release ${{ inputs.Version }} jobs: - build: + pack-and-publish: runs-on: windows-latest + permissions: + contents: read + id-token: write steps: - name: Checkout uses: actions/checkout@v6 @@ -26,20 +29,25 @@ jobs: dotnet-version: 10.0.x - name: Build package - run: dotnet pack ./Castle.Core.slnx -p:Version=${{ inputs.Version }} -o ./build -p:CI=true + run: dotnet pack ./Castle.Core.slnx -p:Version=${{ inputs.Version }} -o ./artifacts -p:CI=true - name: Make explicit versions for nuget packages - run: dotnet run --project .\tools\Explicit.NuGet.Versions\Explicit.NuGet.Versions.csproj ".\build" "castle." + run: dotnet run --project .\tools\Explicit.NuGet.Versions\Explicit.NuGet.Versions.csproj ".\artifacts" "castle." - - name: Publish to nuget.org - if: inputs.publish == 'true' - run: dotnet nuget push ./build/*.nupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json + - name: Upload nuget package + uses: actions/upload-artifact@v6 + with: + compression-level: 0 + name: nupkg + path: artifacts/*nupkg - - name: Upload packages - uses: actions/upload-artifact@v5 + - name: NuGet login + if: inputs.publish == 'true' + uses: NuGet/login@v1 + id: login with: - name: packages - path: | - build/*.nupkg - build/*.snupkg - retention-days: 30 \ No newline at end of file + user: castleproject + + - name: Push to NuGet.org + if: inputs.publish == 'true' + run: dotnet nuget push artifacts/*.nupkg --api-key ${{steps.login.outputs.NUGET_API_KEY}} --source https://api.nuget.org/v3/index.json --skip-duplicate \ No newline at end of file From ad881a447ff2111301caa1c6cf678800b36f131f Mon Sep 17 00:00:00 2001 From: Julian Verdurmen <5808377+304NotModified@users.noreply.github.com> Date: Tue, 10 Mar 2026 00:28:51 +0100 Subject: [PATCH 3/9] fix casing --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c54c08ce42..313c3a90e2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -11,7 +11,7 @@ on: type: boolean required: true default: false -run-name: Release ${{ inputs.Version }} +run-name: Release ${{ inputs.version }} jobs: pack-and-publish: @@ -29,7 +29,7 @@ jobs: dotnet-version: 10.0.x - name: Build package - run: dotnet pack ./Castle.Core.slnx -p:Version=${{ inputs.Version }} -o ./artifacts -p:CI=true + run: dotnet pack ./Castle.Core.slnx -p:Version=${{ inputs.version }} -o ./artifacts -p:CI=true - name: Make explicit versions for nuget packages run: dotnet run --project .\tools\Explicit.NuGet.Versions\Explicit.NuGet.Versions.csproj ".\artifacts" "castle." From cd91f2a22e4dbf89999404856bc398f8fa4ddb3d Mon Sep 17 00:00:00 2001 From: Julian Verdurmen <5808377+304NotModified@users.noreply.github.com> Date: Tue, 10 Mar 2026 00:42:49 +0100 Subject: [PATCH 4/9] fix push --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 313c3a90e2..1bcb384920 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -50,4 +50,4 @@ jobs: - name: Push to NuGet.org if: inputs.publish == 'true' - run: dotnet nuget push artifacts/*.nupkg --api-key ${{steps.login.outputs.NUGET_API_KEY}} --source https://api.nuget.org/v3/index.json --skip-duplicate \ No newline at end of file + run: dotnet nuget push artifacts\*.nupkg --api-key ${{steps.login.outputs.NUGET_API_KEY}} --source https://api.nuget.org/v3/index.json --skip-duplicate \ No newline at end of file From c7ca04f8ebee60ec295a3b93e47db127edcdbabc Mon Sep 17 00:00:00 2001 From: Julian Verdurmen <5808377+304NotModified@users.noreply.github.com> Date: Tue, 10 Mar 2026 01:23:24 +0100 Subject: [PATCH 5/9] Update CHANGELOG Updated changelog with new features, bug fixes, and migration to GitHub Actions. --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 50a94e2bd1..0aa580e229 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,8 @@ Enhancements: - Restore ability on .NET 9 and later to save dynamic assemblies to disk using `PersistentProxyBuilder` (@stakx, #718) - Configure SourceLink & `.snupkg` symbols package format (@Romfos, #722) - Support for C# `with { ... }` expressions. Cloning a record proxy using `with` now produces another proxy of the same type (instead of an instance of the proxied type, as before). The cloning process can still be changed by intercepting the record class' `$` method. (@stakx, #733) +- Moved to GitHub Actions and NuGet Trusted Publishing, removed old build scripts (@Romfos, @304NotModified, #740) +- Moved to SLNX @Romfos, #740) - Dependencies were updated Bugfixes: From 0dc86de587f9cd442d60b15032a6d628c1c9abd9 Mon Sep 17 00:00:00 2001 From: Julian Verdurmen <5808377+304NotModified@users.noreply.github.com> Date: Tue, 10 Mar 2026 01:24:11 +0100 Subject: [PATCH 6/9] Update CHANGELOG Updated changelog to reflect changes in project structure and bug fixes. --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0aa580e229..51103fe25b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,7 +12,7 @@ Enhancements: - Configure SourceLink & `.snupkg` symbols package format (@Romfos, #722) - Support for C# `with { ... }` expressions. Cloning a record proxy using `with` now produces another proxy of the same type (instead of an instance of the proxied type, as before). The cloning process can still be changed by intercepting the record class' `$` method. (@stakx, #733) - Moved to GitHub Actions and NuGet Trusted Publishing, removed old build scripts (@Romfos, @304NotModified, #740) -- Moved to SLNX @Romfos, #740) +- Moved to new solution format (SLNX) (@Romfos, #740) - Dependencies were updated Bugfixes: From dfdbcaacbff8118cd0f85e8f9c237cb21053bbda Mon Sep 17 00:00:00 2001 From: Julian Verdurmen <5808377+304NotModified@users.noreply.github.com> Date: Tue, 10 Mar 2026 01:44:34 +0100 Subject: [PATCH 7/9] fix condition --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1bcb384920..fad6d17cd3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -42,12 +42,12 @@ jobs: path: artifacts/*nupkg - name: NuGet login - if: inputs.publish == 'true' + if: inputs.publish uses: NuGet/login@v1 id: login with: user: castleproject - name: Push to NuGet.org - if: inputs.publish == 'true' + if: inputs.publish run: dotnet nuget push artifacts\*.nupkg --api-key ${{steps.login.outputs.NUGET_API_KEY}} --source https://api.nuget.org/v3/index.json --skip-duplicate \ No newline at end of file From 0cfdbff95524e758c694dbe235f0a1812049d145 Mon Sep 17 00:00:00 2001 From: Julian Verdurmen <5808377+304NotModified@users.noreply.github.com> Date: Tue, 10 Mar 2026 01:49:48 +0100 Subject: [PATCH 8/9] Update CHANGELOG.md Updated changelog with recent enhancements and bug fixes. --- CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 51103fe25b..f7b32c1bd4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,7 +12,6 @@ Enhancements: - Configure SourceLink & `.snupkg` symbols package format (@Romfos, #722) - Support for C# `with { ... }` expressions. Cloning a record proxy using `with` now produces another proxy of the same type (instead of an instance of the proxied type, as before). The cloning process can still be changed by intercepting the record class' `$` method. (@stakx, #733) - Moved to GitHub Actions and NuGet Trusted Publishing, removed old build scripts (@Romfos, @304NotModified, #740) -- Moved to new solution format (SLNX) (@Romfos, #740) - Dependencies were updated Bugfixes: From efdf83a45e9b0a1121f2be13226ffb3eddb6a772 Mon Sep 17 00:00:00 2001 From: Julian Verdurmen <5808377+304NotModified@users.noreply.github.com> Date: Tue, 10 Mar 2026 01:53:22 +0100 Subject: [PATCH 9/9] docs --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index fad6d17cd3..e3a8bc2a65 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -37,7 +37,7 @@ jobs: - name: Upload nuget package uses: actions/upload-artifact@v6 with: - compression-level: 0 + compression-level: 0 # nupkg files are already compressed name: nupkg path: artifacts/*nupkg