Skip to content

Commit 33ba012

Browse files
authored
Upgrade to .NET 10 (#153)
* Don't log to a file by default in a console app * Log to bin directory for tests * Avoid race condition made more likley in .NET 10 * Upgrade to .NET 10 * Update all dependencies * Upgrade windows build to .NET 10 * Update osx installer build dependencies * Roll forward to the latest minimum and ensure CI behaves the same way * Remove unexpected sting from solution * Upgrade all dependencies * Don't use coverlet.collector when using coverlet.msbuild. * Do not depend on GitVersion.Tool having been previously installed * Target GitVersion to .NET 10 * Centralise package management * Don't specify version for centrally managed packages * Centrally manage WixToolset.UI.wixext version * Use centrally managed GitVersion version in installer scripts
1 parent 4e59d12 commit 33ba012

23 files changed

Lines changed: 213 additions & 169 deletions

File tree

.github/dependabot.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ updates:
44
directory: "/"
55
schedule:
66
interval: monthly
7-
rebase-strategy: auto
87
groups:
98
all-dependencies:
109
patterns:

.github/workflows/continuous-delivery.yml

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,23 @@ jobs:
1919
- uses: actions/checkout@v4
2020
with:
2121
fetch-depth: 0
22+
- name: Setup .NET
23+
uses: actions/setup-dotnet@v4
24+
with:
25+
dotnet-version: 10.x
2226
- name: GetSemVer
2327
id: get-semver
28+
shell: pwsh
2429
run: |
25-
dotnet tool install --global GitVersion.Tool --version 6.4.0
26-
output=$(dotnet-gitversion)
27-
semver=$(echo $output | grep -oP '"SemVer"\s*:\s*"\K[^"]+')
28-
echo $output
29-
echo "Semantic version: $semver"
30-
echo "semantic-version=$semver" >> $GITHUB_OUTPUT
30+
$RepoRoot = (Get-Location).Path
31+
Import-Module "$RepoRoot/Build/Get-GitVersionToolVersion.psm1"
32+
$version = Get-GitVersionToolVersion -RepoRoot $RepoRoot
33+
dotnet tool install --global GitVersion.Tool --version $version
34+
$output = dotnet-gitversion
35+
$semver = ($output | ConvertFrom-Json).SemVer
36+
Write-Output $output
37+
Write-Output "Semantic version: $semver"
38+
Add-Content -Path $env:GITHUB_OUTPUT -Value "semantic-version=$semver"
3139
- name: Check for Release Requirement
3240
id: release-check
3341
run: |
@@ -61,7 +69,7 @@ jobs:
6169
- name: Setup .NET
6270
uses: actions/setup-dotnet@v4
6371
with:
64-
dotnet-version: 8.x.x
72+
dotnet-version: 10.x
6573
- name: Build & Test
6674
run: ./Build/build-and-test.ps1
6775
shell: pwsh
@@ -100,7 +108,7 @@ jobs:
100108
- name: Setup .NET
101109
uses: actions/setup-dotnet@v4
102110
with:
103-
dotnet-version: 8.0.x
111+
dotnet-version: 10.x
104112
- name: Build & Test
105113
run: ./Build/build-and-test.ps1
106114
shell: pwsh
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
function Get-GitVersionToolVersion {
2+
[CmdletBinding()]
3+
param(
4+
[string]$RepoRoot = (Split-Path -Parent $PSScriptRoot)
5+
)
6+
7+
$packagesPath = Join-Path $RepoRoot 'Directory.Packages.props'
8+
9+
if (-not (Test-Path $packagesPath)) {
10+
throw "Directory.Packages.props not found at $packagesPath"
11+
}
12+
13+
$xml = [xml](Get-Content $packagesPath)
14+
$pkg = $xml.SelectSingleNode("//PackageVersion[@Include='GitVersion.MsBuild']")
15+
if (-not $pkg) {
16+
throw "GitVersion.MsBuild package version not found in $packagesPath"
17+
}
18+
19+
$version = $pkg.GetAttribute('Version')
20+
if (-not $version) {
21+
throw "Version attribute not found for GitVersion.MsBuild in $packagesPath"
22+
}
23+
24+
return $version
25+
}
26+
27+
Export-ModuleMember -Function Get-GitVersionToolVersion

Build/build-osx-installer.ps1

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ $ErrorActionPreference = "Stop"
22

33
$repoRootPath = (Resolve-Path "$PSScriptRoot/../").Path
44
$releasePath = "$repoRootPath/Installer/Elzik.FmSync.OsxInstaller/x64/Release/"
5-
$consolePublishSourcePath = "$repoRootPath/src/Elzik.FmSync.Console/bin/x64/Release/net8.0/osx-x64/publish"
6-
$workerPublishSourcePath = "$repoRootPath/src/Elzik.FmSync.Worker/bin/x64/Release/net8.0/osx-x64/publish"
5+
$consolePublishSourcePath = "$repoRootPath/src/Elzik.FmSync.Console/bin/x64/Release/net10.0/osx-x64/publish"
6+
$workerPublishSourcePath = "$repoRootPath/src/Elzik.FmSync.Worker/bin/x64/Release/net10.0/osx-x64/publish"
77

88
If((Test-Path -PathType container "$releasePath"))
99
{
@@ -72,7 +72,9 @@ Compress-Archive `
7272
-Force
7373
Test-ExitCode
7474

75-
dotnet tool update --global GitVersion.Tool --version 6.1.0
75+
Import-Module "$PSScriptRoot/Get-GitVersionToolVersion.psm1"
76+
$gitVersionToolVersion = Get-GitVersionToolVersion -RepoRoot $repoRootPath
77+
dotnet tool install --global GitVersion.Tool --version $gitVersionToolVersion
7678
Test-ExitCode
7779

7880
$SemVer = (dotnet-gitversion | ConvertFrom-Json).SemVer

Build/build-windows-installer.ps1

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,9 @@ dotnet build $repoRootPath\Installer\Elzik.FmSync.WindowsInstaller\Elzik.FmSync.
3131
-p:PublishSingleFile=true
3232
Test-ExitCode
3333

34-
dotnet tool update --global GitVersion.Tool --version 6.1.0
34+
Import-Module "$PSScriptRoot/Get-GitVersionToolVersion.psm1"
35+
$gitVersionToolVersion = Get-GitVersionToolVersion -RepoRoot $repoRootPath
36+
dotnet tool install --global GitVersion.Tool --version $gitVersionToolVersion
3537
Test-ExitCode
3638

3739
$SemVer = (dotnet-gitversion | ConvertFrom-Json).SemVer

Build/tag-with-semver.ps1

Lines changed: 0 additions & 9 deletions
This file was deleted.

Directory.Packages.props

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<Project>
2+
<PropertyGroup>
3+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
4+
</PropertyGroup>
5+
6+
<ItemGroup>
7+
<PackageVersion Include="AutoFixture.Xunit2" Version="4.18.1" />
8+
<PackageVersion Include="coverlet.msbuild" Version="8.0.0" />
9+
<PackageVersion Include="GitVersion.MsBuild" Version="6.6.0" />
10+
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.3.0" />
11+
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="10.0.3" />
12+
<PackageVersion Include="Microsoft.Extensions.Hosting.WindowsServices" Version="10.0.3" />
13+
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="10.0.3" />
14+
<PackageVersion Include="Microsoft.Extensions.Options" Version="10.0.3" />
15+
<PackageVersion Include="NSubstitute" Version="5.3.0" />
16+
<PackageVersion Include="NSubstitute.Analyzers.CSharp" Version="1.0.17" />
17+
<PackageVersion Include="Polly.Core" Version="8.6.6" />
18+
<PackageVersion Include="Polly.Extensions" Version="8.6.6" />
19+
<PackageVersion Include="Polly.Testing" Version="8.6.6" />
20+
<PackageVersion Include="Serilog" Version="4.3.1" />
21+
<PackageVersion Include="Serilog.Extensions.Hosting" Version="10.0.0" />
22+
<PackageVersion Include="Serilog.Settings.Configuration" Version="10.0.0" />
23+
<PackageVersion Include="Serilog.Sinks.Console" Version="6.1.1" />
24+
<PackageVersion Include="Serilog.Sinks.File" Version="7.0.0" />
25+
<PackageVersion Include="Shouldly" Version="4.3.0" />
26+
<PackageVersion Include="SonarAnalyzer.CSharp" Version="10.20.0.135146" />
27+
<PackageVersion Include="Thinktecture.IO.FileSystem.Abstractions" Version="2.5.0" />
28+
<PackageVersion Include="WixToolset.UI.wixext" Version="5.0.2" />
29+
<PackageVersion Include="xunit" Version="2.9.3" />
30+
<PackageVersion Include="xunit.analyzers" Version="1.27.0" />
31+
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.5" />
32+
<PackageVersion Include="YamlDotNet" Version="16.3.0" />
33+
</ItemGroup>
34+
</Project>

Elzik.FmSync.sln

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,10 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
3-
# Visual Studio Version 17
4-
VisualStudioVersion = 17.4.33205.214
3+
# Visual Studio Version 18
4+
VisualStudioVersion = 18.0.11205.157
55
MinimumVisualStudioVersion = 10.0.40219.1
6-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elzik.FmSync.Worker", "src\Elzik.FmSync.Worker\Elzik.FmSync.Worker.csproj", "{1035A230-3923-494E-A01A-C41670922EE9}"
7-
EndProject
8-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elzik.FmSync.Console", "src\Elzik.FmSync.Console\Elzik.FmSync.Console.csproj", "{8313B3C5-6FF8-449E-B3DE-6304BAACD62C}"
9-
EndProject
10-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elzik.FmSync.Application", "src\Elzik.FmSync.Application\Elzik.FmSync.Application.csproj", "{FF4D804A-C032-4E93-92A0-14580AA7D0CE}"
11-
EndProject
126
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{CF17A395-4536-42A5-B10B-D2D8EC602BC3}"
137
EndProject
14-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elzik.FmSync.Infrastructure", "src\Elzik.FmSync.Infrastructure\Elzik.FmSync.Infrastructure.csproj", "{7A787CA3-E960-4FC2-8703-D0E0031EED46}"
15-
EndProject
16-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elzik.FmSync.Domain", "src\Elzik.FmSync.Domain\Elzik.FmSync.Domain.csproj", "{5DB426BF-24B5-4E04-A593-A803FE5DC304}"
17-
EndProject
18-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elzik.FmSync.Infrastructure.Tests.Integration", "tests\Elzik.FmSync.Infrastructure.Tests.Integration\Elzik.FmSync.Infrastructure.Tests.Integration.csproj", "{1367919E-184E-4550-B8BB-ECB37C056594}"
19-
EndProject
20-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elzik.FmSync.Application.Tests.Unit", "tests\Elzik.FmSync.Application.Tests.Unit\Elzik.FmSync.Application.Tests.Unit.csproj", "{A3BB6C79-4D8F-4515-92B5-F169F929AF94}"
21-
EndProject
228
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{6839B032-FEC5-4978-A064-BD18FB683118}"
239
ProjectSection(SolutionItems) = preProject
2410
global.json = global.json
@@ -39,6 +25,20 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Build", "Build", "{0FE56BA0
3925
EndProject
4026
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Installer", "Installer", "{069FD2C8-3AFB-4D61-A19A-3257331FC223}"
4127
EndProject
28+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elzik.FmSync.Worker", "src\Elzik.FmSync.Worker\Elzik.FmSync.Worker.csproj", "{1035A230-3923-494E-A01A-C41670922EE9}"
29+
EndProject
30+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elzik.FmSync.Console", "src\Elzik.FmSync.Console\Elzik.FmSync.Console.csproj", "{8313B3C5-6FF8-449E-B3DE-6304BAACD62C}"
31+
EndProject
32+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elzik.FmSync.Application", "src\Elzik.FmSync.Application\Elzik.FmSync.Application.csproj", "{FF4D804A-C032-4E93-92A0-14580AA7D0CE}"
33+
EndProject
34+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elzik.FmSync.Infrastructure", "src\Elzik.FmSync.Infrastructure\Elzik.FmSync.Infrastructure.csproj", "{7A787CA3-E960-4FC2-8703-D0E0031EED46}"
35+
EndProject
36+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elzik.FmSync.Domain", "src\Elzik.FmSync.Domain\Elzik.FmSync.Domain.csproj", "{5DB426BF-24B5-4E04-A593-A803FE5DC304}"
37+
EndProject
38+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elzik.FmSync.Infrastructure.Tests.Integration", "tests\Elzik.FmSync.Infrastructure.Tests.Integration\Elzik.FmSync.Infrastructure.Tests.Integration.csproj", "{1367919E-184E-4550-B8BB-ECB37C056594}"
39+
EndProject
40+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elzik.FmSync.Application.Tests.Unit", "tests\Elzik.FmSync.Application.Tests.Unit\Elzik.FmSync.Application.Tests.Unit.csproj", "{A3BB6C79-4D8F-4515-92B5-F169F929AF94}"
41+
EndProject
4242
Project("{B7DD6F7E-DEF8-4E67-B5B7-07EF123DB6F0}") = "Elzik.FmSync.WindowsInstaller", "Installer\Elzik.FmSync.WindowsInstaller\Elzik.FmSync.WindowsInstaller.wixproj", "{534679A3-D29B-4D63-882B-C09F4D0EA8CB}"
4343
EndProject
4444
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elzik.FmSync.Worker.Tests.Functional", "tests\Elzik.FmSync.Worker.Tests.Functional\Elzik.FmSync.Worker.Tests.Functional.csproj", "{B38B9BF5-29FF-44C2-B243-CC5D548B1C6B}"

Installer/Elzik.FmSync.WindowsInstaller/Elzik.FmSync.WindowsInstaller.wixproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,18 @@
22
<PropertyGroup>
33
<UpdateAssemblyInfo>false</UpdateAssemblyInfo>
44
<GenerateGitVersionInformation>false</GenerateGitVersionInformation>
5-
<GitVersionTargetFramework>net8.0</GitVersionTargetFramework>
5+
<GitVersionTargetFramework>net10.0</GitVersionTargetFramework>
66
<NuGetAuditMode>all</NuGetAuditMode>
77
</PropertyGroup>
88
<ItemGroup>
99
<None Include="LICENSE.rtf" />
1010
</ItemGroup>
1111
<ItemGroup>
12-
<PackageReference Include="GitVersion.MsBuild" Version="6.1.0">
12+
<PackageReference Include="GitVersion.MsBuild" >
1313
<PrivateAssets>all</PrivateAssets>
1414
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1515
</PackageReference>
16-
<PackageReference Include="WixToolset.UI.wixext" Version="5.0.2" />
16+
<PackageReference Include="WixToolset.UI.wixext" />
1717
</ItemGroup>
1818
<ItemGroup>
1919
<ProjectReference Include="..\..\src\Elzik.FmSync.Console\Elzik.FmSync.Console.csproj" />

global.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"sdk": {
3-
"version": "8.0.100",
4-
"rollForward": "latestMinor"
3+
"version": "10.0.100",
4+
"rollForward": "minor"
55
}
66
}

0 commit comments

Comments
 (0)