Skip to content

Commit f577d77

Browse files
committed
(#263) Upgrade .Net 9
1 parent e2d4d87 commit f577d77

File tree

74 files changed

+423
-485
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

74 files changed

+423
-485
lines changed

.github/workflows/.net-build-microservices.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
- name: Setup .NET Core
2323
uses: actions/setup-dotnet@v1
2424
with:
25-
dotnet-version: 8.0.100
25+
dotnet-version: 9.0.102
2626

2727
- name: Build
2828
run: dotnet build --configuration Release

.github/workflows/.net-build-monolith.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
- name: Setup .NET Core
2323
uses: actions/setup-dotnet@v1
2424
with:
25-
dotnet-version: 8.0.100
25+
dotnet-version: 9.0.102
2626

2727

2828
- name: Build

src/Microservices/AspireAppHost/ClassifiedAds.AspireAppHost.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
<PropertyGroup>
66
<OutputType>Exe</OutputType>
7-
<TargetFramework>net8.0</TargetFramework>
7+
<TargetFramework>net9.0</TargetFramework>
88
<ImplicitUsings>enable</ImplicitUsings>
99
<Nullable>enable</Nullable>
1010
<IsAspireHost>true</IsAspireHost>

src/Microservices/Common/ClassifiedAds.Application/ClassifiedAds.Application.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFramework>net8.0</TargetFramework>
4+
<TargetFramework>net9.0</TargetFramework>
55
</PropertyGroup>
66

77
<ItemGroup>
8-
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="8.0.0" />
9-
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="8.0.0" />
8+
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="9.0.1" />
9+
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="9.0.1" />
1010
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118">
1111
<PrivateAssets>all</PrivateAssets>
1212
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFramework>net8.0</TargetFramework>
4+
<TargetFramework>net9.0</TargetFramework>
55
<RootNamespace>ClassifiedAds.CrossCuttingConcerns</RootNamespace>
66
</PropertyGroup>
77

@@ -10,7 +10,7 @@
1010
<PrivateAssets>all</PrivateAssets>
1111
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1212
</PackageReference>
13-
<PackageReference Include="System.Text.Json" Version="8.0.0" />
13+
<PackageReference Include="System.Text.Json" Version="9.0.1" />
1414
</ItemGroup>
1515

1616
</Project>

src/Microservices/Common/ClassifiedAds.Domain/ClassifiedAds.Domain.csproj

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFramework>net8.0</TargetFramework>
4+
<TargetFramework>net9.0</TargetFramework>
55
</PropertyGroup>
66

77
<ItemGroup>
8-
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.0" />
8+
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="9.0.1" />
99
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
1010
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118">
1111
<PrivateAssets>all</PrivateAssets>
1212
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1313
</PackageReference>
1414
<PackageReference Include="System.ComponentModel.Annotations" Version="5.0.0" />
15-
<PackageReference Include="System.Text.Json" Version="8.0.0" />
1615
</ItemGroup>
1716

1817
<ItemGroup>

src/Microservices/Common/ClassifiedAds.Infrastructure/ClassifiedAds.Infrastructure.csproj

Lines changed: 47 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,70 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFramework>net8.0</TargetFramework>
4+
<TargetFramework>net9.0</TargetFramework>
55
<RootNamespace>ClassifiedAds.Infrastructure</RootNamespace>
66
</PropertyGroup>
77

88
<ItemGroup>
99
<FrameworkReference Include="Microsoft.AspNetCore.App" />
1010
<PackageReference Include="AWS.Logger.SeriLog" Version="3.4.3" />
11-
<PackageReference Include="AWSSDK.S3" Version="3.7.304.8" />
11+
<PackageReference Include="AWSSDK.S3" Version="3.7.412.1" />
1212
<PackageReference Include="Azure.Communication.Sms" Version="1.0.1" />
13-
<PackageReference Include="Azure.Data.AppConfiguration" Version="1.3.0" />
14-
<PackageReference Include="Azure.Extensions.AspNetCore.Configuration.Secrets" Version="1.3.0" />
15-
<PackageReference Include="Azure.Identity" Version="1.10.4" />
16-
<PackageReference Include="Azure.Messaging.ServiceBus" Version="7.17.1" />
17-
<PackageReference Include="Azure.Monitor.OpenTelemetry.Exporter" Version="1.2.0" />
18-
<PackageReference Include="Azure.Storage.Blobs" Version="12.19.1" />
19-
<PackageReference Include="Azure.Storage.Queues" Version="12.17.1" />
13+
<PackageReference Include="Azure.Data.AppConfiguration" Version="1.5.0" />
14+
<PackageReference Include="Azure.Extensions.AspNetCore.Configuration.Secrets" Version="1.3.2" />
15+
<PackageReference Include="Azure.Identity" Version="1.13.2" />
16+
<PackageReference Include="Azure.Messaging.ServiceBus" Version="7.18.2" />
17+
<PackageReference Include="Azure.Monitor.OpenTelemetry.Exporter" Version="1.3.0" />
18+
<PackageReference Include="Azure.Storage.Blobs" Version="12.23.0" />
19+
<PackageReference Include="Azure.Storage.Queues" Version="12.21.0" />
2020
<PackageReference Include="Castle.Core" Version="5.1.1" />
21-
<PackageReference Include="Confluent.Kafka" Version="2.3.0" />
22-
<PackageReference Include="CryptographyHelper" Version="3.0.0" />
23-
<PackageReference Include="CsvHelper" Version="30.0.1" />
24-
<PackageReference Include="Dapper.StrongName" Version="2.1.24" />
21+
<PackageReference Include="Confluent.Kafka" Version="2.8.0" />
22+
<PackageReference Include="CryptographyHelper" Version="3.1.0" />
23+
<PackageReference Include="CsvHelper" Version="33.0.1" />
24+
<PackageReference Include="Dapper.StrongName" Version="2.1.35" />
2525
<PackageReference Include="DinkToPdf" Version="1.0.8" />
2626
<PackageReference Include="EntityFrameworkCore.SqlServer.SimpleBulks" Version="8.0.0" />
27-
<PackageReference Include="IdentityModel" Version="6.2.0" />
27+
<PackageReference Include="Google.Protobuf" Version="3.29.3" />
28+
<PackageReference Include="Grpc.Net.Client" Version="2.67.0" />
29+
<PackageReference Include="IdentityModel" Version="7.0.0" />
2830
<PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.22.0" />
29-
<PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="8.0.0" />
30-
<PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="8.0.0" />
31-
<PackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.MessagePack" Version="8.0.0" />
32-
<PackageReference Include="Microsoft.Azure.AppConfiguration.AspNetCore" Version="7.0.0" />
33-
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.0" />
34-
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.0" />
35-
<PackageReference Include="Microsoft.Extensions.Caching.Redis" Version="2.2.0" />
36-
<PackageReference Include="Microsoft.Extensions.Caching.SqlServer" Version="8.0.0" />
37-
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="8.0.0" />
38-
<PackageReference Include="Microsoft.Extensions.Logging.AzureAppServices" Version="8.0.0" />
39-
<PackageReference Include="Microsoft.Extensions.Logging.EventLog" Version="8.0.0" />
40-
<PackageReference Include="MiniProfiler.AspNetCore.Mvc" Version="4.3.8" />
41-
<PackageReference Include="MiniProfiler.EntityFrameworkCore" Version="4.3.8" />
42-
<PackageReference Include="MiniProfiler.Providers.SqlServer" Version="4.3.8" />
43-
<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.7.0" />
44-
<PackageReference Include="OpenTelemetry.Exporter.Zipkin" Version="1.7.0" />
45-
<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.7.0" />
46-
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.7.0" />
47-
<PackageReference Include="OpenTelemetry.Instrumentation.EntityFrameworkCore" Version="1.0.0-beta.3" />
48-
<PackageReference Include="OpenTelemetry.Instrumentation.Http" Version="1.7.0" />
49-
<PackageReference Include="OpenTelemetry.Instrumentation.Process" Version="0.5.0-beta.3" />
50-
<PackageReference Include="OpenTelemetry.Instrumentation.Runtime" Version="1.5.1" />
51-
<PackageReference Include="PuppeteerSharp" Version="13.0.2" />
52-
<PackageReference Include="Quartz" Version="3.8.0" />
53-
<PackageReference Include="RabbitMQ.Client" Version="6.8.1" />
31+
<PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="9.0.1" />
32+
<PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="9.0.1" />
33+
<PackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.MessagePack" Version="9.0.1" />
34+
<PackageReference Include="Microsoft.Azure.AppConfiguration.AspNetCore" Version="8.0.0" />
35+
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.1" />
36+
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="9.0.1" />
37+
<PackageReference Include="Microsoft.Extensions.Caching.Redis" Version="2.3.0" />
38+
<PackageReference Include="Microsoft.Extensions.Caching.SqlServer" Version="9.0.1" />
39+
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="9.0.1" />
40+
<PackageReference Include="Microsoft.Extensions.Logging.AzureAppServices" Version="9.0.1" />
41+
<PackageReference Include="Microsoft.Extensions.Logging.EventLog" Version="9.0.1" />
42+
<PackageReference Include="MiniProfiler.AspNetCore.Mvc" Version="4.5.4" />
43+
<PackageReference Include="MiniProfiler.EntityFrameworkCore" Version="4.5.4" />
44+
<PackageReference Include="MiniProfiler.Providers.SqlServer" Version="4.5.4" />
45+
<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.11.0" />
46+
<PackageReference Include="OpenTelemetry.Exporter.Zipkin" Version="1.11.0" />
47+
<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.11.0" />
48+
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.10.1" />
49+
<PackageReference Include="OpenTelemetry.Instrumentation.EntityFrameworkCore" Version="1.10.0-beta.1" />
50+
<PackageReference Include="OpenTelemetry.Instrumentation.Http" Version="1.10.0" />
51+
<PackageReference Include="OpenTelemetry.Instrumentation.Process" Version="1.10.0-beta.1" />
52+
<PackageReference Include="OpenTelemetry.Instrumentation.Runtime" Version="1.10.0" />
53+
<PackageReference Include="PuppeteerSharp" Version="20.0.5" />
54+
<PackageReference Include="Quartz" Version="3.13.1" />
55+
<PackageReference Include="RabbitMQ.Client" Version="7.0.0" />
5456
<PackageReference Include="RazorLight" Version="2.3.1" />
55-
<PackageReference Include="SendGrid" Version="9.28.1" />
56-
<PackageReference Include="Serilog" Version="3.1.1" />
57-
<PackageReference Include="Serilog.AspNetCore" Version="8.0.0" />
58-
<PackageReference Include="Serilog.Enrichers.Environment" Version="2.3.0" />
57+
<PackageReference Include="SendGrid" Version="9.29.3" />
58+
<PackageReference Include="Serilog" Version="4.2.0" />
59+
<PackageReference Include="Serilog.AspNetCore" Version="9.0.0" />
60+
<PackageReference Include="Serilog.Enrichers.Environment" Version="3.0.1" />
5961
<PackageReference Include="Serilog.Exceptions" Version="8.4.0" />
6062
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118">
6163
<PrivateAssets>all</PrivateAssets>
6264
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
6365
</PackageReference>
64-
<PackageReference Include="Twilio" Version="6.15.2" />
65-
<PackageReference Include="VaultSharp" Version="1.13.0.1" />
66+
<PackageReference Include="Twilio" Version="7.8.2" />
67+
<PackageReference Include="VaultSharp" Version="1.17.5.1" />
6668
</ItemGroup>
6769

6870
<ItemGroup>

src/Microservices/Common/ClassifiedAds.Infrastructure/MessageBrokers/RabbitMQ/RabbitMQHealthCheck.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public RabbitMQHealthCheck(RabbitMQHealthCheckOptions options)
1515
_options = options;
1616
}
1717

18-
public Task<HealthCheckResult> CheckHealthAsync(HealthCheckContext context, CancellationToken cancellationToken = default)
18+
public async Task<HealthCheckResult> CheckHealthAsync(HealthCheckContext context, CancellationToken cancellationToken = default)
1919
{
2020
try
2121
{
@@ -26,14 +26,14 @@ public Task<HealthCheckResult> CheckHealthAsync(HealthCheckContext context, Canc
2626
Password = _options.Password,
2727
};
2828

29-
using var connection = connectionFactory.CreateConnection();
30-
using var model = connection.CreateModel();
29+
using var connection = await connectionFactory.CreateConnectionAsync(cancellationToken);
30+
using var channel = await connection.CreateChannelAsync(cancellationToken: cancellationToken);
3131

32-
return Task.FromResult(HealthCheckResult.Healthy($"HostName: {_options.HostName}"));
32+
return HealthCheckResult.Healthy($"HostName: {_options.HostName}");
3333
}
3434
catch (Exception exception)
3535
{
36-
return Task.FromResult(new HealthCheckResult(context.Registration.FailureStatus, null, exception));
36+
return new HealthCheckResult(context.Registration.FailureStatus, null, exception);
3737
}
3838
}
3939
}

src/Microservices/Common/ClassifiedAds.Infrastructure/MessageBrokers/RabbitMQ/RabbitMQReceiver.cs

Lines changed: 26 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -16,36 +16,34 @@ namespace ClassifiedAds.Infrastructure.MessageBrokers.RabbitMQ;
1616
public class RabbitMQReceiver<TConsumer, T> : IMessageReceiver<TConsumer, T>, IDisposable
1717
{
1818
private readonly RabbitMQReceiverOptions _options;
19-
private readonly IConnection _connection;
20-
private IModel _channel;
21-
private string _queueName;
19+
private IConnection _connection;
20+
private IChannel _channel;
2221

2322
public RabbitMQReceiver(RabbitMQReceiverOptions options)
2423
{
2524
_options = options;
26-
27-
_connection = new ConnectionFactory
28-
{
29-
HostName = options.HostName,
30-
UserName = options.UserName,
31-
Password = options.Password,
32-
AutomaticRecoveryEnabled = true,
33-
DispatchConsumersAsync = true
34-
}.CreateConnection();
35-
36-
_queueName = options.QueueName;
37-
38-
_connection.ConnectionShutdown += Connection_ConnectionShutdown;
3925
}
4026

41-
private void Connection_ConnectionShutdown(object sender, ShutdownEventArgs e)
27+
private Task Connection_ConnectionShutdownAsync(object sender, ShutdownEventArgs e)
4228
{
4329
// TODO: add log here
30+
31+
return Task.CompletedTask;
4432
}
4533

46-
public Task ReceiveAsync(Func<T, MetaData, Task> action, CancellationToken cancellationToken = default)
34+
public async Task ReceiveAsync(Func<T, MetaData, Task> action, CancellationToken cancellationToken = default)
4735
{
48-
_channel = _connection.CreateModel();
36+
_connection = await new ConnectionFactory
37+
{
38+
HostName = _options.HostName,
39+
UserName = _options.UserName,
40+
Password = _options.Password,
41+
AutomaticRecoveryEnabled = true,
42+
}.CreateConnectionAsync(cancellationToken);
43+
44+
_connection.ConnectionShutdownAsync += Connection_ConnectionShutdownAsync;
45+
46+
_channel = await _connection.CreateChannelAsync(cancellationToken: cancellationToken);
4947

5048
if (_options.AutomaticCreateEnabled)
5149
{
@@ -79,21 +77,21 @@ public Task ReceiveAsync(Func<T, MetaData, Task> action, CancellationToken cance
7977

8078
if (_options.DeadLetter.AutomaticCreateEnabled && !string.IsNullOrEmpty(_options.DeadLetter.QueueName))
8179
{
82-
_channel.QueueDeclare(_options.DeadLetter.QueueName, true, false, false, null);
83-
_channel.QueueBind(_options.DeadLetter.QueueName, _options.DeadLetter.ExchangeName, _options.DeadLetter.RoutingKey, null);
80+
await _channel.QueueDeclareAsync(_options.DeadLetter.QueueName, true, false, false, null, cancellationToken: cancellationToken);
81+
await _channel.QueueBindAsync(_options.DeadLetter.QueueName, _options.DeadLetter.ExchangeName, _options.DeadLetter.RoutingKey, null, cancellationToken: cancellationToken);
8482
}
8583
}
8684

8785
arguments = arguments.Count == 0 ? null : arguments;
8886

89-
_channel.QueueDeclare(_options.QueueName, true, false, false, arguments);
90-
_channel.QueueBind(_options.QueueName, _options.ExchangeName, _options.RoutingKey, null);
87+
await _channel.QueueDeclareAsync(_options.QueueName, true, false, false, arguments, cancellationToken: cancellationToken);
88+
await _channel.QueueBindAsync(_options.QueueName, _options.ExchangeName, _options.RoutingKey, null, cancellationToken: cancellationToken);
9189
}
9290

93-
_channel.BasicQos(prefetchSize: 0, prefetchCount: 1, global: false);
91+
await _channel.BasicQosAsync(prefetchSize: 0, prefetchCount: 1, global: false, cancellationToken: cancellationToken);
9492

9593
var consumer = new AsyncEventingBasicConsumer(_channel);
96-
consumer.Received += async (model, ea) =>
94+
consumer.ReceivedAsync += async (model, ea) =>
9795
{
9896
try
9997
{
@@ -122,21 +120,17 @@ public Task ReceiveAsync(Func<T, MetaData, Task> action, CancellationToken cance
122120

123121
await action(message.Data, message.MetaData);
124122

125-
_channel.BasicAck(deliveryTag: ea.DeliveryTag, multiple: false);
123+
await _channel.BasicAckAsync(deliveryTag: ea.DeliveryTag, multiple: false);
126124
}
127125
catch (Exception ex)
128126
{
129127
// TODO: log here
130128
await Task.Delay(1000);
131-
_channel.BasicNack(deliveryTag: ea.DeliveryTag, multiple: false, requeue: _options.RequeueOnFailure);
129+
await _channel.BasicNackAsync(deliveryTag: ea.DeliveryTag, multiple: false, requeue: _options.RequeueOnFailure);
132130
}
133131
};
134132

135-
_channel.BasicConsume(queue: _queueName,
136-
autoAck: false,
137-
consumer: consumer);
138-
139-
return Task.CompletedTask;
133+
await _channel.BasicConsumeAsync(queue: _options.QueueName, autoAck: false, consumer: consumer, cancellationToken: cancellationToken);
140134
}
141135

142136
public void Dispose()

0 commit comments

Comments
 (0)