Skip to content

Build everything as .NET 10#2899

Open
Numpsy wants to merge 18 commits into
fsprojects:masterfrom
Numpsy:users/rw/net10
Open

Build everything as .NET 10#2899
Numpsy wants to merge 18 commits into
fsprojects:masterfrom
Numpsy:users/rw/net10

Conversation

@Numpsy

@Numpsy Numpsy commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

Description

Changes to build everything as .NET 10, built on top of #2852

Thorium and others added 18 commits May 17, 2026 00:13
Change global.json .NET 6 to 8
Search and replace targetframeworks from fsproj files to add net8.0
Add net8.0 to paket.dependencies
dotnet paket install to find .NET8 compatible dependencies
Expecto had to be hardcoded for now, because some tests are running on netstandard2.0 library (hopefully we can update this separately later)
MSBuild.StructuredLogger problem: DisableInternalBinLog = true had to be added to build.fsx NuGet commands (hopefully we can update this separately later)
A few places of code had new overrides so had to explicitly type to strings
SdkAssemblyResolver to default .NET 8 as well
Readme update
GitHub pipeline configs: Add .NET 8 install.
…l has to be upgraded from 16 to 20, to make GenerateDocs task pass.
…the 8.0.0 alpha build

Instead of pulling the 6.1.X build off NuGet.org.
This might bootstrap the tests enough to get them all passing
… up the fix for GHSA-w3q9-fxm7-j8fq

Also updates transitive dependencies on System.Text.Json to
Comment thread Directory.Build.props
</PropertyGroup>
<PropertyGroup>
<!-- Disable package pruning warnings when using Paket -->
<NoWarn>NU1510</NoWarn>

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are warnings about package pruning in the builds on .NET 10 - see fsprojects/Paket#4307

Comment thread build.fsx
Common = { defaults.Common with WorkingDirectory = "src/app/fake-cli/" }
MSBuildParams = setMsBuildParams defaults.MSBuildParams }

DotNet.msbuild setParams "fake-cli.fsproj"

@Numpsy Numpsy Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pretty much everything in the build just worked after moving to .NET 10, but one issue was with the tool for building the .deb package.
Firstly, the current dotnet tool release is built as several .NET versions but not 10, and has roll forward disabled (see quamotion/dotnet-packaging#268) . Enabling roll forward made the build pass on Windows and Linux, but macOS failed with some issues about .NET 9 not being able to build .NET 10 assemblies, as though it was using the old SDK even though global.json points at .NET 10.

Changing it to use the dotnet-deb CreateDeb MSBuild tasks instead of the global tool has made it work on all 3 platforms, but that needs a review to confirm that it's ok.

@@ -1,110 +0,0 @@
{

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't believe that this or PaketRestoreTask.dll are needed any more (it looks to me like it was added in Paket 4, and then removed in 4 as well, back in 2017), though I don't know any of the history of that.

Comment thread paket.lock
NuGet.Frameworks (6.12.4)
NuGet.Packaging (6.12.4)
Newtonsoft.Json (13.0.4)
NuGet.Common (6.14.3)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

paket.lock changes largely done just by adding changing the TFMs in paket.dependencies and running an update.

One note: NuGet packages left at 6.14 instead of v7, because 7 doesn't support .NET Standard 2.0 any more, and some of the consumers here are multi-targetted as .NET standard 2.0 and .NET 10.0

@github-actions

github-actions Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

Test Results

   12 files  + 2     12 suites  +2   32m 13s ⏱️ + 15m 58s
  452 tests ± 0    451 ✅ + 1  1 💤 ±0  0 ❌  - 1 
1 290 runs  +84  1 287 ✅ +85  3 💤 ±0  0 ❌  - 1 

Results for commit d240366. ± Comparison against base commit e37773e.

This pull request removes 3 and adds 3 tests. Note that renamed tests count towards both.
[Fake.DotNet.sdkAssemblyResolverTests; Runner run script with 6.0.300 SDK version assemblies and resolve runtime version from cached file]
[Fake.DotNet.sdkAssemblyResolverTests; Runner run script with 6.0.300 SDK version assemblies]
[Fake.DotNet.sdkAssemblyResolverTests; Runner run script with 6.0.301 SDK version assemblies]
[Fake.DotNet.sdkAssemblyResolverTests; Runner run script with 10.0.100 SDK version assemblies and resolve runtime version from cached file]
[Fake.DotNet.sdkAssemblyResolverTests; Runner run script with 10.0.100 SDK version assemblies]
[Fake.DotNet.sdkAssemblyResolverTests; Runner run script with 10.0.101 SDK version assemblies]

@Numpsy Numpsy changed the title [WIP] Build everything as .NET 10 Build everything as .NET 10 Jul 5, 2026
@Numpsy Numpsy marked this pull request as ready for review July 6, 2026 22:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants