diff --git a/.github/workflows/pr-gate.yml b/.github/workflows/pr-gate.yml index 1d19a88..5863c05 100644 --- a/.github/workflows/pr-gate.yml +++ b/.github/workflows/pr-gate.yml @@ -11,22 +11,14 @@ jobs: steps: - uses: actions/checkout@v2 - - name: Setup .NET Core 3.1 - uses: actions/setup-dotnet@v1 - with: - dotnet-version: 3.1.x - - name: Setup .NET 5 - uses: actions/setup-dotnet@v1 - with: - dotnet-version: 5.0.x - - name: Setup .NET 6 - uses: actions/setup-dotnet@v1 - with: - dotnet-version: 6.0.x - name: Setup .NET 8 uses: actions/setup-dotnet@v1 with: dotnet-version: 8.0.x + - name: Setup .NET 10 + uses: actions/setup-dotnet@v1 + with: + dotnet-version: 10.0.x - name: Install dependencies run: dotnet restore - name: Build diff --git a/.github/workflows/publish-nugets.yml b/.github/workflows/publish-nugets.yml index d908ae6..92fa097 100644 --- a/.github/workflows/publish-nugets.yml +++ b/.github/workflows/publish-nugets.yml @@ -9,22 +9,14 @@ jobs: runs-on: windows-latest steps: - uses: actions/checkout@v2 - - name: Setup .NET Core 3.1 - uses: actions/setup-dotnet@v1 - with: - dotnet-version: 3.1.x - - name: Setup .NET 5 - uses: actions/setup-dotnet@v1 - with: - dotnet-version: 5.0.x - - name: Setup .NET 6 - uses: actions/setup-dotnet@v1 - with: - dotnet-version: 6.0.x - name: Setup .NET 8 uses: actions/setup-dotnet@v1 with: dotnet-version: 8.0.x + - name: Setup .NET 10 + uses: actions/setup-dotnet@v1 + with: + dotnet-version: 10.0.x - name: Install dependencies run: dotnet restore - name: Build diff --git a/Directory.Build.props b/Directory.Build.props index 6fb4881..2c22d1d 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -26,20 +26,20 @@ - + all runtime; build; native; contentfiles; analyzers - + runtime; build; native; contentfiles; analyzers; buildtransitive all - - - - - + + + + + \ No newline at end of file diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 4412da1..704ee23 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -4,6 +4,13 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## 5.8.0 +- Added + - `net10.0` added as an additional target framework across `Ev.ServiceBus`, `Ev.ServiceBus.Abstractions`, `Ev.ServiceBus.Apm`, `Ev.ServiceBus.AsyncApi`, `Ev.ServiceBus.HealthChecks`, `Ev.ServiceBus.Mvc`, and `Ev.ServiceBus.Prometheus`, alongside the existing `net8.0` (and `netstandard2.0`/`netstandard2.1` on the core packages). Non-breaking — existing net8.0 consumers are unaffected. +- Changed + - `Ev.ServiceBus.Mvc` no longer references the legacy `Microsoft.AspNetCore.Mvc.Abstractions`/`Microsoft.AspNetCore.Mvc.Core` 2.2.x NuGet packages — it now uses a `FrameworkReference` to `Microsoft.AspNetCore.App`, matching the ASP.NET Core shared-framework model used since .NET Core 3.0. + - Bumped `Azure.Identity` to 1.17.1 (1.17.0 was deprecated), `Elastic.Apm` to 1.34.5, `AspNetCore.HealthChecks.AzureServiceBus` to 9.0.0. + ## 5.7.5 - Fixed - `ApmTransactionManager` now registers the APM error filter **at construction time** (application startup) instead of lazily inside `OnReceiveCancelled()`. The lazy approach lost a race: during pod graceful shutdown the APM agent flushes its internal buffer concurrently with Service Bus processor teardown, so error events could be sent to APM before `ReceiverWrapper.OnExceptionOccured` ran and had a chance to register the filter. Registering at construction time — before any message processing starts — closes this window. diff --git a/samples/Ev.ServiceBus.Aspire.Host/Ev.ServiceBus.Aspire.Host.csproj b/samples/Ev.ServiceBus.Aspire.Host/Ev.ServiceBus.Aspire.Host.csproj index 225854e..d02ab2b 100644 --- a/samples/Ev.ServiceBus.Aspire.Host/Ev.ServiceBus.Aspire.Host.csproj +++ b/samples/Ev.ServiceBus.Aspire.Host/Ev.ServiceBus.Aspire.Host.csproj @@ -1,17 +1,17 @@ - + Exe - net8.0 + net10.0 enable enable 107e167e-5575-4f6e-8661-fe8d2c335f7a - + diff --git a/samples/Ev.ServiceBus.Aspire.ServiceDefault/Ev.ServiceBus.Aspire.ServiceDefault.csproj b/samples/Ev.ServiceBus.Aspire.ServiceDefault/Ev.ServiceBus.Aspire.ServiceDefault.csproj index 8cdb216..a33acc7 100644 --- a/samples/Ev.ServiceBus.Aspire.ServiceDefault/Ev.ServiceBus.Aspire.ServiceDefault.csproj +++ b/samples/Ev.ServiceBus.Aspire.ServiceDefault/Ev.ServiceBus.Aspire.ServiceDefault.csproj @@ -1,7 +1,7 @@ - net8.0 + net10.0 enable enable true diff --git a/samples/Ev.ServiceBus.Sample.Contracts/Ev.ServiceBus.Sample.Contracts.csproj b/samples/Ev.ServiceBus.Sample.Contracts/Ev.ServiceBus.Sample.Contracts.csproj index 9a10cbf..d67bff2 100644 --- a/samples/Ev.ServiceBus.Sample.Contracts/Ev.ServiceBus.Sample.Contracts.csproj +++ b/samples/Ev.ServiceBus.Sample.Contracts/Ev.ServiceBus.Sample.Contracts.csproj @@ -1,7 +1,7 @@ - net8.0 + net10.0 diff --git a/samples/Ev.ServiceBus.Samples.Receiver/Ev.ServiceBus.Samples.Receiver.csproj b/samples/Ev.ServiceBus.Samples.Receiver/Ev.ServiceBus.Samples.Receiver.csproj index 6588b73..979a27a 100644 --- a/samples/Ev.ServiceBus.Samples.Receiver/Ev.ServiceBus.Samples.Receiver.csproj +++ b/samples/Ev.ServiceBus.Samples.Receiver/Ev.ServiceBus.Samples.Receiver.csproj @@ -1,7 +1,7 @@ - net8.0 + net10.0 true enable diff --git a/samples/Ev.ServiceBus.Samples.Sender/Ev.ServiceBus.Samples.Sender.csproj b/samples/Ev.ServiceBus.Samples.Sender/Ev.ServiceBus.Samples.Sender.csproj index a1e1c72..1fb41e7 100644 --- a/samples/Ev.ServiceBus.Samples.Sender/Ev.ServiceBus.Samples.Sender.csproj +++ b/samples/Ev.ServiceBus.Samples.Sender/Ev.ServiceBus.Samples.Sender.csproj @@ -1,7 +1,7 @@ - net8.0 + net10.0 true enable diff --git a/src/Ev.ServiceBus.Abstractions/Ev.ServiceBus.Abstractions.csproj b/src/Ev.ServiceBus.Abstractions/Ev.ServiceBus.Abstractions.csproj index cdf7a91..dacdabf 100644 --- a/src/Ev.ServiceBus.Abstractions/Ev.ServiceBus.Abstractions.csproj +++ b/src/Ev.ServiceBus.Abstractions/Ev.ServiceBus.Abstractions.csproj @@ -1,7 +1,7 @@  - netstandard2.1;netstandard2.0;net8.0 + netstandard2.1;netstandard2.0;net8.0;net10.0 true MIT @@ -14,7 +14,7 @@ enable - + @@ -27,4 +27,7 @@ + + + \ No newline at end of file diff --git a/src/Ev.ServiceBus.Apm/Ev.ServiceBus.Apm.csproj b/src/Ev.ServiceBus.Apm/Ev.ServiceBus.Apm.csproj index c5bf004..f73b851 100644 --- a/src/Ev.ServiceBus.Apm/Ev.ServiceBus.Apm.csproj +++ b/src/Ev.ServiceBus.Apm/Ev.ServiceBus.Apm.csproj @@ -1,7 +1,7 @@  - net8.0 + net8.0;net10.0 true MIT This package helps you add instrumentation to message handling with Elastic APM. @@ -15,7 +15,7 @@ - + diff --git a/src/Ev.ServiceBus.AsyncApi/Ev.ServiceBus.AsyncApi.csproj b/src/Ev.ServiceBus.AsyncApi/Ev.ServiceBus.AsyncApi.csproj index 6e4798f..8134868 100644 --- a/src/Ev.ServiceBus.AsyncApi/Ev.ServiceBus.AsyncApi.csproj +++ b/src/Ev.ServiceBus.AsyncApi/Ev.ServiceBus.AsyncApi.csproj @@ -1,7 +1,7 @@ - net8.0 + net8.0;net10.0 true MIT This package helps you generate an Async API Schema. diff --git a/src/Ev.ServiceBus.HealthChecks/Ev.ServiceBus.HealthChecks.csproj b/src/Ev.ServiceBus.HealthChecks/Ev.ServiceBus.HealthChecks.csproj index 462b6a2..1490c2f 100644 --- a/src/Ev.ServiceBus.HealthChecks/Ev.ServiceBus.HealthChecks.csproj +++ b/src/Ev.ServiceBus.HealthChecks/Ev.ServiceBus.HealthChecks.csproj @@ -1,7 +1,7 @@ - net8.0 + net8.0;net10.0 true MIT This package links Ev.ServiceBus and Microsoft.Extensions.Diagnostics.HealthChecks NuGet packages. @@ -12,8 +12,14 @@ - - + + + + + + + + diff --git a/src/Ev.ServiceBus.Mvc/Ev.ServiceBus.Mvc.csproj b/src/Ev.ServiceBus.Mvc/Ev.ServiceBus.Mvc.csproj index bac4ed8..8408259 100644 --- a/src/Ev.ServiceBus.Mvc/Ev.ServiceBus.Mvc.csproj +++ b/src/Ev.ServiceBus.Mvc/Ev.ServiceBus.Mvc.csproj @@ -1,7 +1,7 @@ - net8.0 + net8.0;net10.0 true MIT This NuGet contains helpers to better integrate Ev.ServiceBus with Mvc projects. @@ -15,8 +15,7 @@ - - + diff --git a/src/Ev.ServiceBus.Prometheus/Ev.ServiceBus.Prometheus.csproj b/src/Ev.ServiceBus.Prometheus/Ev.ServiceBus.Prometheus.csproj index 7794efa..6392def 100644 --- a/src/Ev.ServiceBus.Prometheus/Ev.ServiceBus.Prometheus.csproj +++ b/src/Ev.ServiceBus.Prometheus/Ev.ServiceBus.Prometheus.csproj @@ -1,7 +1,7 @@  - net8.0 + net8.0;net10.0 true MIT This package helps you add prometheus meters on top of servicebus messaging. @@ -11,10 +11,16 @@ - + + + + + + + diff --git a/src/Ev.ServiceBus/Ev.ServiceBus.csproj b/src/Ev.ServiceBus/Ev.ServiceBus.csproj index 416260e..f4b9099 100644 --- a/src/Ev.ServiceBus/Ev.ServiceBus.csproj +++ b/src/Ev.ServiceBus/Ev.ServiceBus.csproj @@ -1,7 +1,7 @@  - netstandard2.1;netstandard2.0;net8.0 + netstandard2.1;netstandard2.0;net8.0;net10.0 true MIT This is a wrapper around Microsoft Azure Service Bus @@ -31,6 +31,11 @@ Its goal to is make it the easiest possible to connect and handle an Azure Servi + + + + + diff --git a/tests/Ev.ServiceBus.AsyncApi.UnitTests/DocumentFilterTest.cs b/tests/Ev.ServiceBus.AsyncApi.UnitTests/DocumentFilterTest.cs index 736334b..241c09c 100644 --- a/tests/Ev.ServiceBus.AsyncApi.UnitTests/DocumentFilterTest.cs +++ b/tests/Ev.ServiceBus.AsyncApi.UnitTests/DocumentFilterTest.cs @@ -1,7 +1,7 @@ +using System.Net; using System.Text.Json; using System.Threading.Tasks; using FluentAssertions; -using Microsoft.AspNetCore.Http; using Xunit; namespace Ev.ServiceBus.AsyncApi.UnitTests; @@ -15,7 +15,7 @@ public async Task CheckStateOfSenderApp() var client = factory.CreateClient(); var response = await client.GetAsync("/asyncapi/asyncapi.json"); - response.StatusCode.Should().Be(StatusCodes.Status200OK); + response.StatusCode.Should().Be(HttpStatusCode.OK); var json = await response.Content.ReadAsStringAsync(); var actualDoc = JsonDocument.Parse(json); @@ -295,7 +295,7 @@ public async Task CheckStateOfReceiverApp() var factory = new ReceiverAppFactory(); var client = factory.CreateClient(); var response = await client.GetAsync("/asyncapi/asyncapi.json"); - response.StatusCode.Should().Be(StatusCodes.Status200OK); + response.StatusCode.Should().Be(HttpStatusCode.OK); var json = await response.Content.ReadAsStringAsync(); var actualDoc = JsonDocument.Parse(json); diff --git a/tests/Ev.ServiceBus.AsyncApi.UnitTests/Ev.ServiceBus.AsyncApi.UnitTests.csproj b/tests/Ev.ServiceBus.AsyncApi.UnitTests/Ev.ServiceBus.AsyncApi.UnitTests.csproj index 786cb25..83fa8d1 100644 --- a/tests/Ev.ServiceBus.AsyncApi.UnitTests/Ev.ServiceBus.AsyncApi.UnitTests.csproj +++ b/tests/Ev.ServiceBus.AsyncApi.UnitTests/Ev.ServiceBus.AsyncApi.UnitTests.csproj @@ -1,12 +1,12 @@ - net8.0 + net10.0 false - + diff --git a/tests/Ev.ServiceBus.HealthChecks.UnitTests/Ev.ServiceBus.HealthChecks.UnitTests.csproj b/tests/Ev.ServiceBus.HealthChecks.UnitTests/Ev.ServiceBus.HealthChecks.UnitTests.csproj index 42cbac7..ecede8a 100644 --- a/tests/Ev.ServiceBus.HealthChecks.UnitTests/Ev.ServiceBus.HealthChecks.UnitTests.csproj +++ b/tests/Ev.ServiceBus.HealthChecks.UnitTests/Ev.ServiceBus.HealthChecks.UnitTests.csproj @@ -1,7 +1,7 @@ - net8.0 + net8.0;net10.0 false @@ -10,7 +10,10 @@ - + + + + diff --git a/tests/Ev.ServiceBus.Mvc.UnitTests/DispatchTest.cs b/tests/Ev.ServiceBus.Mvc.UnitTests/DispatchTest.cs index 53f5610..357916c 100644 --- a/tests/Ev.ServiceBus.Mvc.UnitTests/DispatchTest.cs +++ b/tests/Ev.ServiceBus.Mvc.UnitTests/DispatchTest.cs @@ -1,11 +1,11 @@ -using System.Threading; +using System.Net; +using System.Threading; using System.Threading.Tasks; using Azure.Messaging.ServiceBus; using Ev.ServiceBus.Samples.Sender; using Ev.ServiceBus.UnitTests.Helpers; using FluentAssertions; using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc.Testing; using Microsoft.AspNetCore.TestHost; using Microsoft.Extensions.Logging; @@ -23,7 +23,7 @@ public async Task EventsAreSentAtTheEndOfTheRequestExecution() var client = factory.CreateClient(); var response = await client.GetAsync("weatherforecast/pushWeather"); - response.StatusCode.Should().Be(StatusCodes.Status200OK); + response.StatusCode.Should().Be(HttpStatusCode.OK); var queue = factory.Services.GetSenderMock("myqueue"); queue.Mock.Verify(o => o.SendMessagesAsync(It.IsAny(), It.IsAny()), Times.Once); @@ -38,7 +38,7 @@ public async Task FailingRequestsDoNotSendEvents() var client = factory.CreateClient(); var response = await client.GetAsync("failing/pushWeather"); - response.StatusCode.Should().Be(StatusCodes.Status500InternalServerError); + response.StatusCode.Should().Be(HttpStatusCode.InternalServerError); var queue = factory.Services.GetSenderMock("myqueue"); queue.Mock.Verify(o => o.SendMessagesAsync(It.IsAny(), It.IsAny()), Times.Never); diff --git a/tests/Ev.ServiceBus.Mvc.UnitTests/Ev.ServiceBus.Mvc.UnitTests.csproj b/tests/Ev.ServiceBus.Mvc.UnitTests/Ev.ServiceBus.Mvc.UnitTests.csproj index fd5c83e..fa60fb4 100644 --- a/tests/Ev.ServiceBus.Mvc.UnitTests/Ev.ServiceBus.Mvc.UnitTests.csproj +++ b/tests/Ev.ServiceBus.Mvc.UnitTests/Ev.ServiceBus.Mvc.UnitTests.csproj @@ -1,12 +1,12 @@ - net8.0 + net10.0 false - + diff --git a/tests/Ev.ServiceBus.TestHelpers/Ev.ServiceBus.TestHelpers.csproj b/tests/Ev.ServiceBus.TestHelpers/Ev.ServiceBus.TestHelpers.csproj index 7da80a8..ea8a43f 100644 --- a/tests/Ev.ServiceBus.TestHelpers/Ev.ServiceBus.TestHelpers.csproj +++ b/tests/Ev.ServiceBus.TestHelpers/Ev.ServiceBus.TestHelpers.csproj @@ -1,7 +1,7 @@ - net8.0 + net8.0;net10.0 @@ -9,10 +9,13 @@ - + - + + + + diff --git a/tests/Ev.ServiceBus.UnitTests/Ev.ServiceBus.UnitTests.csproj b/tests/Ev.ServiceBus.UnitTests/Ev.ServiceBus.UnitTests.csproj index 4ef7907..8040fc9 100644 --- a/tests/Ev.ServiceBus.UnitTests/Ev.ServiceBus.UnitTests.csproj +++ b/tests/Ev.ServiceBus.UnitTests/Ev.ServiceBus.UnitTests.csproj @@ -2,13 +2,13 @@ false - net8.0 + net8.0;net10.0 CS0618 enable - +