Skip to content

Commit 8a59c4b

Browse files
authored
Target .NET 8 (#380)
Motivation ---------- General modernization. Modifications ------------- - Add global.json to require the .NET 8 SDK - Use LangVersion 12 in Directory.Build.props - Drop the deprecated .NET Standard 2.1 build target and add .NET 8 - Update to Couchbase SDK 3.5.5 - Upgrade various NuGet dependencies, especially for unit tests, and drop some unnecessary dependencies - Use the in-box SourceLink in .NET 8 SDK rather than the OOB package - Target net8.0 for unit tests - Fix a LOT of nullable reference type warnings due to improved annotations in .NET 8
1 parent 1cb678c commit 8a59c4b

59 files changed

Lines changed: 183 additions & 174 deletions

File tree

Some content is hidden

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

Src/Couchbase.Linq.IntegrationTests/Couchbase.Linq.IntegrationTests.csproj

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

33
<PropertyGroup>
4-
<TargetFramework>net6.0</TargetFramework>
4+
<TargetFramework>net8.0</TargetFramework>
55
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
6-
<LangVersion>10</LangVersion>
76
</PropertyGroup>
87

98
<ItemGroup>
@@ -14,15 +13,12 @@
1413
</ItemGroup>
1514

1615
<ItemGroup>
17-
<PackageReference Include="CouchbaseNetClient" Version="3.4.8" />
18-
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
19-
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.4" />
20-
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="3.1.4" />
21-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.6.1" />
22-
<PackageReference Include="Moq" Version="4.18.4" />
23-
<PackageReference Include="NUnit" Version="3.12.0" />
24-
<PackageReference Include="NUnit3TestAdapter" Version="3.16.1" />
25-
<PackageReference Include="System.ComponentModel.Annotations" Version="4.7.0" />
16+
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.1" />
17+
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="8.0.2" />
18+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
19+
<PackageReference Include="Moq" Version="4.20.72" />
20+
<PackageReference Include="NUnit" Version="3.14.0" />
21+
<PackageReference Include="NUnit3TestAdapter" Version="4.6.0" />
2622
</ItemGroup>
2723

2824
<ItemGroup>

Src/Couchbase.Linq.UnitTests/Couchbase.Linq.UnitTests.csproj

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

33
<PropertyGroup>
4-
<TargetFramework>net6.0</TargetFramework>
4+
<TargetFramework>net8.0</TargetFramework>
55
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
6-
<LangVersion>10</LangVersion>
76
</PropertyGroup>
87

98
<ItemGroup>
109
<ProjectReference Include="..\Couchbase.Linq\Couchbase.Linq.csproj" />
1110
</ItemGroup>
1211

1312
<ItemGroup>
14-
<PackageReference Include="CouchbaseNetClient" Version="3.4.8" />
15-
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
16-
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.4" />
17-
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="3.1.4" />
18-
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.4" />
19-
<PackageReference Include="Microsoft.Extensions.Logging" Version="3.1.4" />
20-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.6.1" />
21-
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
22-
<PackageReference Include="Moq" Version="4.18.4" />
23-
<PackageReference Include="NUnit" Version="3.13.3" />
24-
<PackageReference Include="System.ComponentModel.Annotations" Version="4.7.0" />
13+
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.1" />
14+
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="8.0.2" />
15+
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.1" />
16+
<PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.1" />
17+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
18+
<PackageReference Include="NUnit3TestAdapter" Version="4.6.0" />
19+
<PackageReference Include="Moq" Version="4.20.72" />
20+
<PackageReference Include="NUnit" Version="3.14.0" />
2521
</ItemGroup>
2622

2723
<ItemGroup>

Src/Couchbase.Linq/Clauses/ConsistentWithExpressionNode.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ protected override void ApplyNodeSpecificSemantics(QueryModel queryModel,
7474
ClauseGenerationContext clauseGenerationContext)
7575
{
7676
queryModel.BodyClauses.Add(new ConsistentWithClause(
77-
(MutationState) MutationState.Value,
77+
(MutationState) MutationState.Value!,
7878
(TimeSpan?) ScanWait?.Value));
7979
}
8080
}

Src/Couchbase.Linq/Clauses/NestExpressionNode.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ internal class NestExpressionNode : MethodCallExpressionNodeBase, IQuerySourceEx
1111
{
1212
public static readonly MethodInfo[] SupportedMethods =
1313
{
14-
typeof(QueryExtensions).GetMethod("Nest"),
15-
typeof(QueryExtensions).GetMethod("LeftOuterNest")
14+
typeof(QueryExtensions).GetMethod("Nest")!,
15+
typeof(QueryExtensions).GetMethod("LeftOuterNest")!
1616
};
1717

1818
private readonly ResolvedExpressionCache<Expression> _cachedKeySelector;
@@ -92,7 +92,7 @@ protected override void ApplyNodeSpecificSemantics(QueryModel queryModel,
9292
ClauseGenerationContext clauseGenerationContext)
9393
{
9494
var nestClause = new NestClause(
95-
ResultSelector.Parameters[1].Name,
95+
ResultSelector.Parameters[1].Name!,
9696
ResultSelector.Parameters[1].Type,
9797
InnerSequence,
9898
GetResolvedKeySelector(clauseGenerationContext),

Src/Couchbase.Linq/Clauses/ScanConsistencyExpressionNode.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ protected override void ApplyNodeSpecificSemantics(QueryModel queryModel,
6969
ClauseGenerationContext clauseGenerationContext)
7070
{
7171
queryModel.BodyClauses.Add(new ScanConsistencyClause(
72-
(QueryScanConsistency) ScanConsistency.Value,
72+
(QueryScanConsistency) ScanConsistency.Value!,
7373
(TimeSpan?) ScanWait?.Value));
7474
}
7575
}

Src/Couchbase.Linq/Clauses/UseHashExpressionNode.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public override Expression Resolve(ParameterExpression inputParameter, Expressio
3737
protected override void ApplyNodeSpecificSemantics(QueryModel queryModel,
3838
ClauseGenerationContext clauseGenerationContext)
3939
{
40-
queryModel.BodyClauses.Add(new UseHashClause((HashHintType) HashHintType.Value));
40+
queryModel.BodyClauses.Add(new UseHashClause((HashHintType) HashHintType.Value!));
4141
}
4242
}
4343
}

Src/Couchbase.Linq/Clauses/UseIndexExpressionNode.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public override Expression Resolve(ParameterExpression inputParameter, Expressio
4848
protected override void ApplyNodeSpecificSemantics(QueryModel queryModel,
4949
ClauseGenerationContext clauseGenerationContext)
5050
{
51-
queryModel.BodyClauses.Add(new UseIndexClause((string) IndexName.Value, (N1QlIndexType) IndexType.Value));
51+
queryModel.BodyClauses.Add(new UseIndexClause((string) IndexName.Value!, (N1QlIndexType) IndexType.Value!));
5252
}
5353
}
5454
}

Src/Couchbase.Linq/Clauses/UseKeysExpressionNode.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ internal class UseKeysExpressionNode : MethodCallExpressionNodeBase
1111
{
1212
public static readonly MethodInfo[] SupportedMethods =
1313
{
14-
typeof (QueryExtensions).GetMethod("UseKeys")
14+
typeof (QueryExtensions).GetMethod("UseKeys")!
1515
};
1616

1717
public UseKeysExpressionNode(MethodCallExpressionParseInfo parseInfo, Expression keys)

Src/Couchbase.Linq/Couchbase.Linq.csproj

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
<PackageProjectUrl>https://github.com/couchbaselabs/Linq2Couchbase</PackageProjectUrl>
1313
<PackageIconUrl></PackageIconUrl>
1414

15-
<TargetFrameworks>netstandard2.0;netstandard2.1;net6.0</TargetFrameworks>
15+
<TargetFrameworks>netstandard2.0;net6.0;net8.0</TargetFrameworks>
1616
<RootNamespace>Couchbase.Linq</RootNamespace>
1717
<AssemblyName>Couchbase.Linq</AssemblyName>
1818

@@ -22,7 +22,6 @@
2222
<PublishRepositoryUrl>true</PublishRepositoryUrl>
2323
<EmbedUntrackedSources>true</EmbedUntrackedSources>
2424

25-
<LangVersion>10</LangVersion>
2625
<Nullable>enable</Nullable>
2726
<SignAssembly>false</SignAssembly>
2827
<Version>2.0.1-beta.1</Version>
@@ -32,16 +31,12 @@
3231
</PropertyGroup>
3332

3433
<ItemGroup>
35-
<PackageReference Include="CouchbaseNetClient" Version="3.4.8" />
36-
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1">
37-
<PrivateAssets>all</PrivateAssets>
38-
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
39-
</PackageReference>
40-
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
34+
<PackageReference Include="CouchbaseNetClient" Version="3.5.5" />
35+
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
4136
<PackageReference Include="Remotion.Linq" Version="2.2.0" />
4237
</ItemGroup>
4338

44-
<ItemGroup Condition=" '$(TargetFramework)' == 'netstandard2.0' OR '$(TargetFramework)' == 'netstandard2.1' ">
39+
<ItemGroup Condition="!$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net6.0'))">
4540
<PackageReference Include="System.Reflection.Emit.Lightweight" Version="4.7.0" />
4641
</ItemGroup>
4742

Src/Couchbase.Linq/Execution/ClusterQueryExecutor.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -159,15 +159,17 @@ public T ExecuteScalar<T>(QueryModel queryModel)=>
159159
: ExecuteCollection<T>(queryModel).Single();
160160

161161
public Task<T> ExecuteScalarAsync<T>(QueryModel queryModel, CancellationToken cancellationToken = default) =>
162-
ExecuteSingleAsync<T>(queryModel, false, cancellationToken);
162+
ExecuteSingleAsync<T>(queryModel, false, cancellationToken)!;
163163

164-
public Task<T> ExecuteSingleAsync<T>(QueryModel queryModel, bool returnDefaultWhenEmpty, CancellationToken cancellationToken = default)
164+
public Task<T?> ExecuteSingleAsync<T>(QueryModel queryModel, bool returnDefaultWhenEmpty, CancellationToken cancellationToken = default)
165165
{
166166
// ReSharper disable MethodSupportsCancellation
167-
var result = returnDefaultWhenEmpty
167+
#pragma warning disable CS8619 // Nullability of reference types in value doesn't match target type.
168+
ValueTask<T?> result = returnDefaultWhenEmpty
168169
? ExecuteCollectionAsync<T>(queryModel).SingleOrDefaultAsync(cancellationToken)
169170
: ExecuteCollectionAsync<T>(queryModel).SingleAsync(cancellationToken);
170-
// ReSharper restore MethodSupportsCancellation
171+
#pragma warning restore CS8619 // Nullability of reference types in value doesn't match target type.
172+
// ReSharper restore MethodSupportsCancellation
171173

172174
return result.AsTask();
173175
}

0 commit comments

Comments
 (0)