build: upgrade to .NET 10 and update dependencies

- Bump TargetFramework to net10.0 in Directory.Build.props
- Update Microsoft.Extensions and OpenTelemetry packages to latest versions
- Update test SDK and xunit runner
- Refactor TestWebSocketServer to use HostBuilder and ConfigureWebHost
  to respond to deprecation notice
- Pin FluentAssertions version to [7.2.0]
- Remove redundant Microsoft.Extensions.Http reference in StevesBot.Webhook
This commit is contained in:
Stevan Freeborn
2026-01-11 18:43:51 -06:00
parent e6e8b6be2d
commit a6a6cf49c7
5 changed files with 37 additions and 31 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
<Project> <Project>
<PropertyGroup> <PropertyGroup>
<TargetFramework>net9.0</TargetFramework> <TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<AnalysisLevel>latest</AnalysisLevel> <AnalysisLevel>latest</AnalysisLevel>
+8 -8
View File
@@ -6,14 +6,14 @@
<ItemGroup> <ItemGroup>
<PackageVersion Include="Microsoft.AspNetCore.OpenApi" Version="9.0.5" /> <PackageVersion Include="Microsoft.AspNetCore.OpenApi" Version="9.0.5" />
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="9.0.5" /> <PackageVersion Include="Microsoft.Extensions.Hosting" Version="10.0.1" />
<PackageVersion Include="Microsoft.Extensions.Http" Version="9.0.5" /> <PackageVersion Include="Microsoft.Extensions.Http" Version="10.0.1" />
<PackageVersion Include="Microsoft.Extensions.Http.Resilience" Version="9.5.0" /> <PackageVersion Include="Microsoft.Extensions.Http.Resilience" Version="10.1.0" />
<PackageVersion Include="OpenTelemetry.Exporter.Console" Version="1.12.0" /> <PackageVersion Include="OpenTelemetry.Exporter.Console" Version="1.14.0" />
<PackageVersion Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.12.0" /> <PackageVersion Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.14.0" />
<PackageVersion Include="OpenTelemetry.Extensions.Hosting" Version="1.12.0" /> <PackageVersion Include="OpenTelemetry.Extensions.Hosting" Version="1.14.0" />
<PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.12.0" /> <PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.14.0" />
<PackageVersion Include="OpenTelemetry.Instrumentation.Http" Version="1.12.0" /> <PackageVersion Include="OpenTelemetry.Instrumentation.Http" Version="1.14.0" />
</ItemGroup> </ItemGroup>
</Project> </Project>
@@ -2,7 +2,6 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.OpenApi" /> <PackageReference Include="Microsoft.AspNetCore.OpenApi" />
<PackageReference Include="Microsoft.Extensions.Http" />
<PackageReference Include="Microsoft.Extensions.Http.Resilience" /> <PackageReference Include="Microsoft.Extensions.Http.Resilience" />
</ItemGroup> </ItemGroup>
+4 -4
View File
@@ -7,13 +7,13 @@
<ItemGroup> <ItemGroup>
<PackageVersion Include="coverlet.collector" Version="6.0.4" /> <PackageVersion Include="coverlet.collector" Version="6.0.4" />
<PackageVersion Include="coverlet.msbuild" Version="6.0.4" /> <PackageVersion Include="coverlet.msbuild" Version="6.0.4" />
<PackageVersion Include="FluentAssertions" Version="7.2.0" /> <PackageVersion Include="FluentAssertions" Version="[7.2.0]" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Testing" Version="9.0.5" /> <PackageVersion Include="Microsoft.AspNetCore.Mvc.Testing" Version="10.0.1" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.14.0" /> <PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.0.1" />
<PackageVersion Include="moq" Version="4.20.72" /> <PackageVersion Include="moq" Version="4.20.72" />
<PackageVersion Include="RichardSzalay.MockHttp" Version="7.0.0" /> <PackageVersion Include="RichardSzalay.MockHttp" Version="7.0.0" />
<PackageVersion Include="xunit" Version="2.9.3" /> <PackageVersion Include="xunit" Version="2.9.3" />
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.0" /> <PackageVersion Include="xunit.runner.visualstudio" Version="3.1.5" />
</ItemGroup> </ItemGroup>
</Project> </Project>
@@ -1,10 +1,12 @@
using Microsoft.AspNetCore.Hosting.Server;
using WebSocket = System.Net.WebSockets.WebSocket; using WebSocket = System.Net.WebSockets.WebSocket;
namespace StevesBot.Worker.Tests.Integration.Infrastructure; namespace StevesBot.Worker.Tests.Integration.Infrastructure;
public sealed class TestWebSocketServer : IAsyncLifetime, IDisposable public sealed class TestWebSocketServer : IAsyncLifetime, IDisposable
{ {
private readonly IWebHost _host; private readonly IHost _host;
private readonly CancellationTokenSource _echoCts = new(); private readonly CancellationTokenSource _echoCts = new();
private Uri? _webSocketUri; private Uri? _webSocketUri;
@@ -19,8 +21,10 @@ public sealed class TestWebSocketServer : IAsyncLifetime, IDisposable
public TestWebSocketServer() public TestWebSocketServer()
{ {
_host = new WebHostBuilder() _host = new HostBuilder()
.Configure(app => .ConfigureWebHost(b =>
{
b.Configure(app =>
{ {
app.UseWebSockets(); app.UseWebSockets();
@@ -36,9 +40,11 @@ public sealed class TestWebSocketServer : IAsyncLifetime, IDisposable
context.Response.StatusCode = 400; context.Response.StatusCode = 400;
} }
}); });
});
b.UseKestrel();
b.UseUrls("http://[::1]:0");
}) })
.UseKestrel()
.UseUrls("http://[::1]:0")
.Build(); .Build();
} }
@@ -58,7 +64,8 @@ public sealed class TestWebSocketServer : IAsyncLifetime, IDisposable
private Uri GetWebSocketUri() private Uri GetWebSocketUri()
{ {
var address = _host.ServerFeatures.GetRequiredFeature<IServerAddressesFeature>().Addresses.First(); var serverFeatures = _host.Services.GetRequiredService<IServer>().Features;
var address = serverFeatures.GetRequiredFeature<IServerAddressesFeature>().Addresses.First();
var webSocketAddress = address.Replace("http://", "ws://", StringComparison.OrdinalIgnoreCase); var webSocketAddress = address.Replace("http://", "ws://", StringComparison.OrdinalIgnoreCase);
return new Uri(webSocketAddress + "/ws"); return new Uri(webSocketAddress + "/ws");
} }