You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by fr...@apache.org on 2026/08/05 06:51:14 UTC
(logging-log4net) branch master updated (d6fdd180 -> 9a64f952)
This is an automated email from the ASF dual-hosted git repository.
FreeAndNil pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4net.git
from d6fdd180 update version
add c9e278b2 Target .NET 10 / C# 14 for tests
add 7f63f490 Build net4x without Mono
add 27216417 Build the container image from the .NET 10 SDK image
add 96123c99 Stop the release scripts on failed steps
add 9fab1adb Fix the log4net.Ext.Mail package readme
add d3984901 Quieten the TelnetAppender test
add a73070c5 Update BUILDING.md to match the actual build
add cfeb2e5d Run CI on the latest runner images (#305)
add 98742f23 Remove the Mono guards from the tests (#305)
new 9a64f952 dotnet 10 build cleanup (#305)
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.github/workflows/build.yaml | 4 +-
Dockerfile | 33 ++++--------
doc/BUILDING.md | 63 ++++++++++------------
scripts/build-preview.ps1 | 12 ++++-
scripts/build-release.ps1 | 4 ++
src/MonoForFramework.targets | 20 -------
.../3.4.0/305-build-net4x-without-mono.xml | 17 ++++++
src/changelog/3.4.0/305-docker-sdk-image.xml | 13 +++++
.../305-fix-ext-mail-package-readme.xml} | 6 ++-
src/changelog/3.4.0/305-fix-release-scripts.xml | 15 ++++++
src/changelog/3.4.0/305-target-dotnet-10.xml | 13 +++++
.../log4net-611-main/log4net-611-main.csproj | 2 +-
.../log4net-672/log4net-672.csproj | 2 +-
.../log4net-673/log4net-673.csproj | 2 +-
.../log4net-681/log4net-681.csproj | 2 +-
.../log4net.Ext.Mail.Tests.csproj | 2 +-
src/log4net.Ext.Mail/log4net.Ext.Mail.csproj | 2 +-
.../Appender/Internal/SimpleTelnetClient.cs | 47 +++++++++++-----
.../Appender/RollingFileAppenderTest.cs | 10 ----
.../Appender/SmtpPickupDirAppenderTest.cs | 3 --
src/log4net.Tests/Appender/TelnetAppenderTest.cs | 5 --
src/log4net.Tests/Core/LoggingEventTest.cs | 2 -
src/log4net.Tests/Utils.cs | 19 -------
src/log4net.Tests/log4net.Tests.csproj | 9 ++--
src/log4net/log4net.csproj | 1 -
25 files changed, 160 insertions(+), 148 deletions(-)
delete mode 100644 src/MonoForFramework.targets
create mode 100644 src/changelog/3.4.0/305-build-net4x-without-mono.xml
create mode 100644 src/changelog/3.4.0/305-docker-sdk-image.xml
copy src/changelog/{3.3.1/287-reduce-silent-log-event-loss.xml => 3.4.0/305-fix-ext-mail-package-readme.xml} (55%)
create mode 100644 src/changelog/3.4.0/305-fix-release-scripts.xml
create mode 100644 src/changelog/3.4.0/305-target-dotnet-10.xml
(logging-log4net) 01/01: dotnet 10 build cleanup (#305)
Posted by fr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
FreeAndNil pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4net.git
commit 9a64f95270ff1d0ff84bc02e2e3d757ae5076d44
Merge: d6fdd180 98742f23
Author: Jan Friedrich <43...@users.noreply.github.com>
AuthorDate: Wed Aug 5 08:51:08 2026 +0200
dotnet 10 build cleanup (#305)
## Why
The sources already use C# 14 (the `field` keyword in `SmtpAppender`'s property accessors), which
requires the .NET 10 SDK. Nothing in the repo declared that: the test projects targeted `net8.0`,
CI installed .NET 8 and the Dockerfile fetched the 8.0 channel, so a clean checkout could not
compile - it failed with `CS0501: 'SmtpAppender.To.get' must declare a body`.
This PR makes the required toolchain explicit and cleans up the surrounding build, which turned up
several unrelated defects along the way.
**The shipped surface is unchanged.** `log4net` still targets `net462;netstandard2.0` and
`log4net.Ext.Mail` still targets `netstandard2.0`. Nothing here affects consumers.
## Changes
| Commit | What |
|---|---|
| Target .NET 10 / C# 14 | test and integration-test projects `net8.0` → `net10.0`; CI `dotnet-version: 10` |
| Build net4x without Mono | delete `MonoForFramework.targets` and its two imports |
| Container image from the .NET 10 SDK image | `ubuntu:20.04` + `dotnet-install.sh` →
`mcr.microsoft.com/dotnet/sdk:10.0-noble` |
| Stop the release scripts on failed steps | `$PSNativeCommandUseErrorActionPreference` in both scripts, plus a path
fix |
| Fix the log4net.Ext.Mail package readme | `NU5039` |
| Quieten the TelnetAppender test | graceful socket shutdown |
| Update BUILDING.md | document what the build actually is |
### Mono is no longer needed to build net4x
`MonoForFramework.targets` set `FrameworkPathOverride` to Mono's `4.6.2-api` directory on Unix. That
is obsolete: the .NET SDK already adds an implicit `PackageReference` to
`Microsoft.NETFramework.ReferenceAssemblies.<tfm>` for net4x targets, and those packages were
already in the restore graph.
### net462 tests are now Windows-only
VSTest hosts net4x tests through `TestHostNetFramework/testhost.exe`, a .NET Framework executable,
so `dotnet test` aborts with `TESTRUNABORT` on Linux and macOS. `log4net.Tests` now conditions its
`TargetFrameworks` on `'$(OS)' != 'Windows_NT'`, so no unrunnable test assembly is produced. The
`net462` **library** is still built on every platform; only the test target is gated.
This also fixes the `ubuntu-22.04` and `macos-14` CI jobs, which ran a bare `dotnet test` against a
`net462` target they could not host.
### Run CI on the latest runner images
macos-14 and ubuntu-22.04 are superseded by macos-latest (macOS 26) and ubuntu-latest (Ubuntu 24.04).
Neither new image ships Mono, so net4x tests cannot run there - which is why log4net.Tests restricts net462 to Windows.
### Release scripts continued after failed steps
`$ErrorActionPreference = 'Stop'` does not apply to native commands — they only set
`$LASTEXITCODE`. A failing `dotnet`, `git`, `zip`, `gpg` or `mvnw` was therefore ignored, and
artifacts were packaged, signed and tagged anyway. Both scripts now set
`$PSNativeCommandUseErrorActionPreference` (PowerShell 7.3+).
This was not theoretical: `NU5039` made the `log4net.Ext.Mail` pack fail, no `.nupkg` was produced,
and `build-preview.ps1` went on to gpg-sign files that did not exist. `build-preview.ps1` also built
its artifact paths with backslashes, which are not path separators outside Windows.
### TelnetAppender test noise
`SimpleTelnetClient.Dispose()` disposed the `TcpClient` while the reader was blocked in
`stream.Read`, so teardown aborted the socket and dumped an `IOException` with a stack trace on
every passing run. The cancellation token never actually broke the loop — it was only checked after
a successful read. Now the socket is shut down first, the read returns 0, and the loop exits
normally. Exceptions arriving after disposal starts are not reported; genuine failures still are.
## Verification
On Linux (Ubuntu-based, .NET SDK 10.0.110, self-built Mono present but unused by the build):
- `dotnet build ./src/log4net.sln` - succeeds, 0 warnings
- `dotnet test ./src/log4net.sln` - **292 total, 0 failed, 281 succeeded**, 11 skipped (Windows-only)
- `net462` and `net472` compile with `MonoForFramework.targets` deleted
- `log4net.Tests.Signing.AssemblyShouldBeSigned` passes - strong naming survives the
reference-assembly switch
- `./mvnw site` works
- both scripts parse under pwsh 7.6.4; the native-error behaviour was verified directly
## For reviewers to weigh
**Nothing tests on the .NET 8 runtime any more.** `netstandard2.0` consumers on .NET 8 (LTS until
November 2026) are still supported but no longer exercised.
**The MCR image reference is fully qualified**, so it needs no registry configuration and no login.
.github/workflows/build.yaml | 4 +-
Dockerfile | 33 ++++--------
doc/BUILDING.md | 63 ++++++++++------------
scripts/build-preview.ps1 | 12 ++++-
scripts/build-release.ps1 | 4 ++
src/MonoForFramework.targets | 20 -------
.../3.4.0/305-build-net4x-without-mono.xml | 17 ++++++
src/changelog/3.4.0/305-docker-sdk-image.xml | 13 +++++
.../3.4.0/305-fix-ext-mail-package-readme.xml | 12 +++++
src/changelog/3.4.0/305-fix-release-scripts.xml | 15 ++++++
src/changelog/3.4.0/305-target-dotnet-10.xml | 13 +++++
.../log4net-611-main/log4net-611-main.csproj | 2 +-
.../log4net-672/log4net-672.csproj | 2 +-
.../log4net-673/log4net-673.csproj | 2 +-
.../log4net-681/log4net-681.csproj | 2 +-
.../log4net.Ext.Mail.Tests.csproj | 2 +-
src/log4net.Ext.Mail/log4net.Ext.Mail.csproj | 2 +-
.../Appender/Internal/SimpleTelnetClient.cs | 47 +++++++++++-----
.../Appender/RollingFileAppenderTest.cs | 10 ----
.../Appender/SmtpPickupDirAppenderTest.cs | 3 --
src/log4net.Tests/Appender/TelnetAppenderTest.cs | 5 --
src/log4net.Tests/Core/LoggingEventTest.cs | 2 -
src/log4net.Tests/Utils.cs | 19 -------
src/log4net.Tests/log4net.Tests.csproj | 9 ++--
src/log4net/log4net.csproj | 1 -
25 files changed, 168 insertions(+), 146 deletions(-)