Skip to content

Commit 1a3e97a

Browse files
authored
Add support for dotnet 10 (#2229)
* Add dotnet10 as target framework and fix breaking changes * Fix tests * Fix tests for CI * Fix typo
1 parent d74d834 commit 1a3e97a

File tree

12 files changed

+35
-11
lines changed

12 files changed

+35
-11
lines changed

.github/workflows/ci.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ jobs:
1717
with:
1818
dotnet-version: |
1919
8.0.x
20+
10.0.x
2021
2122
- name: Checkout code
2223
uses: actions/checkout@v4
@@ -48,12 +49,13 @@ jobs:
4849
with:
4950
dotnet-version: |
5051
8.0.x
52+
10.0.x
5153
5254
- name: Checkout code
5355
uses: actions/checkout@v4
5456

5557
- name: Execute tests
56-
run: dotnet test --framework net8.0 --configuration Release Source/MQTTnet.Tests/MQTTnet.Tests.csproj
58+
run: dotnet test --framework net10.0 --configuration Release Source/MQTTnet.Tests/MQTTnet.Tests.csproj
5759

5860
sign:
5961
needs: build

Directory.Build.props

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<Project>
22
<PropertyGroup>
3-
<TargetFramework>net8.0</TargetFramework>
3+
<TargetFrameworks>net8.0;net10.0</TargetFrameworks>
44
<Product>MQTTnet</Product>
55
<Authors>The contributors of MQTTnet</Authors>
66
<Company>The contributors of MQTTnet</Company>
@@ -11,6 +11,7 @@
1111
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
1212
<EnforceCodeStyleInBuild>false</EnforceCodeStyleInBuild>
1313
<ImplicitUsings>enable</ImplicitUsings>
14+
<Nullable>disable</Nullable>
1415

1516
<NeutralLanguage>en-US</NeutralLanguage>
1617
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
@@ -24,10 +25,6 @@
2425
<AnalysisLevel>latest</AnalysisLevel>
2526
<AnalysisMode>recommended</AnalysisMode>
2627
<AnalysisModeStyle>default</AnalysisModeStyle>
27-
28-
<TestingPlatformShowTestsFailure>true</TestingPlatformShowTestsFailure>
29-
<TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
30-
<EnableMSTestRunner>true</EnableMSTestRunner>
3128
</PropertyGroup>
3229

3330
<PropertyGroup Condition="'$(GITHUB_ACTIONS)' == 'true'">

Samples/Server/Server_TLS_Samples.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,10 +59,12 @@ static X509Certificate2 CreateSelfSignedCertificate(string oid)
5959
certRequest.CertificateExtensions.Add(sanBuilder.Build());
6060

6161
using var certificate = certRequest.CreateSelfSigned(DateTimeOffset.Now.AddMinutes(-10), DateTimeOffset.Now.AddMinutes(10));
62+
#pragma warning disable SYSLIB0057
6263
var pfxCertificate = new X509Certificate2(
6364
certificate.Export(X509ContentType.Pfx),
6465
(string)null!,
6566
X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.Exportable);
67+
#pragma warning restore SYSLIB0057
6668

6769
return pfxCertificate;
6870
}

Source/MQTTnet.Server/Internal/Adapter/MqttTcpServerListener.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,9 +202,14 @@ await sslStream.AuthenticateAsServerAsync(
202202

203203
clientCertificate = sslStream.RemoteCertificate as X509Certificate2;
204204

205+
// TODO: Check why this export is needed. Is there something else in the RemoteCertificate as a X509Certificate2???
205206
if (clientCertificate == null && sslStream.RemoteCertificate != null)
206207
{
208+
#if NET10_0_OR_GREATER
209+
clientCertificate = X509CertificateLoader.LoadCertificate(sslStream.RemoteCertificate.Export(X509ContentType.Cert));
210+
#else
207211
clientCertificate = new X509Certificate2(sslStream.RemoteCertificate.Export(X509ContentType.Cert));
212+
#endif
208213
}
209214
}
210215

Source/MQTTnet.TestApp/MQTTnet.TestApp.csproj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
<PropertyGroup>
44
<OutputType>Exe</OutputType>
5-
<DebugType>Full</DebugType>
65
<IsPackable>false</IsPackable>
76
</PropertyGroup>
87

Source/MQTTnet.Tests/MQTTnet.Tests.csproj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
54
<OutputType>Exe</OutputType>
65
<IsPackable>false</IsPackable>
76
<LangVersion>default</LangVersion>

Source/MQTTnet.Tests/Server/HotSwapCerts_Tests.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,10 +122,12 @@ static X509Certificate2 CreateSelfSignedCertificate(string oid)
122122
certRequest.CertificateExtensions.Add(sanBuilder.Build());
123123

124124
using var certificate = certRequest.CreateSelfSigned(DateTimeOffset.Now.AddMinutes(-10), DateTimeOffset.Now.AddMinutes(10));
125+
#pragma warning disable SYSLIB0057
125126
var pfxCertificate = new X509Certificate2(
126127
certificate.Export(X509ContentType.Pfx),
127128
(string)null,
128129
X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.Exportable);
130+
#pragma warning restore SYSLIB0057
129131

130132
return pfxCertificate;
131133
}

Source/MQTTnet.Tests/Server/Load_Tests.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#if DEBUG
22

3+
using System.Globalization;
34
using MQTTnet.Internal;
45
using MQTTnet.Packets;
56
using MQTTnet.Protocol;
@@ -52,7 +53,7 @@ await client.SendAsync(
5253

5354
for (var j = 0; j < 1000; j++)
5455
{
55-
publishPacket.Topic = j.ToString();
56+
publishPacket.Topic = j.ToString(CultureInfo.InvariantCulture);
5657

5758
await client.SendAsync(publishPacket, CancellationToken.None);
5859
}
@@ -139,7 +140,7 @@ public async Task Handle_100_000_Messages_In_Server()
139140

140141
for (var j = 0; j < 1000; j++)
141142
{
142-
var message = applicationMessageBuilder.WithTopic(j.ToString()).Build();
143+
var message = applicationMessageBuilder.WithTopic(j.ToString(CultureInfo.InvariantCulture)).Build();
143144

144145
await client.PublishAsync(message);
145146
}

Source/MQTTnet.Tests/Server/Subscription_TopicHash_Tests.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -520,10 +520,11 @@ static int CheckTopicSubscriptions(MqttSession clientSession, List<string> topic
520520
static byte[] GetBytes(ulong value)
521521
{
522522
var bytes = BitConverter.GetBytes(value);
523+
523524
// Ensure that highest byte comes first for comparison left to right
524525
if (BitConverter.IsLittleEndian)
525526
{
526-
return bytes.Reverse().ToArray();
527+
bytes = bytes.AsEnumerable().Reverse().ToArray();
527528
}
528529

529530
return bytes;

Source/MQTTnet.Tests/Server/Tls_Tests.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,12 @@ static X509Certificate2 CreateCertificate(string oid)
3131
certRequest.CertificateExtensions.Add(sanBuilder.Build());
3232

3333
using var certificate = certRequest.CreateSelfSigned(DateTimeOffset.Now.AddMinutes(-10), DateTimeOffset.Now.AddMinutes(10));
34+
#pragma warning disable SYSLIB0057
3435
var pfxCertificate = new X509Certificate2(
3536
certificate.Export(X509ContentType.Pfx),
3637
(string)null,
3738
X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.Exportable);
39+
#pragma warning restore SYSLIB0057
3840

3941
return pfxCertificate;
4042
}

0 commit comments

Comments
 (0)