Paket icon indicating copy to clipboard operation
Paket copied to clipboard

.net 10 support

Open Larocceau opened this issue 6 months ago • 2 comments

.net 10 is coming out later this year, so it would be good to get started on support on it. I would be interested in having a go at it, but that would probably be in a few weeks; given the dev guide it should not be too hard

As for now the issue on supporting .net 9 is still open #4237, is there actually anything that needs to be done there still?

Larocceau avatar May 21 '25 14:05 Larocceau

Thanks @Larocceau, I closed the .net 9 issue as the PR for support was merged.

If you want to give a shot to extend for .net 10 support, feel free to make a PR and reach out for assistance.

Based on previous experience, minor adjustments to few files, and adding a simple test case is good enough for things to work.

smoothdeveloper avatar May 22 '25 21:05 smoothdeveloper

Something like https://github.com/fsprojects/Paket/compare/master...Numpsy:Paket:net10 ?

(Doesn't quite work at the moment because the tryNormalizeVersion function turns the '10' in 'net10-windows' into '1.0' and fails the tests)

Numpsy avatar Jun 03 '25 23:06 Numpsy

Hi @smoothdeveloper , any plans on fixing+merging the above PR?

granicz avatar Aug 07 '25 15:08 granicz

Anybody have any idea when paket will be able to support .net 10?

halcwb avatar Nov 15 '25 17:11 halcwb

It does already in alpha channel. We just need a couple of more people to confirm that everything is OK.

Casper @.***> schrieb am Sa., 15. Nov. 2025, 18:36:

halcwb left a comment (fsprojects/Paket#4296) https://github.com/fsprojects/Paket/issues/4296#issuecomment-3536707275

Anybody have any idea when paket will be able to support .net 10?

— Reply to this email directly, view it on GitHub https://github.com/fsprojects/Paket/issues/4296#issuecomment-3536707275, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAAOANDIVIHWMX6IN6ANQFL345QBNAVCNFSM6AAAAAB5TNTFOGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZTKMZWG4YDOMRXGU . You are receiving this because you are subscribed to this thread.Message ID: @.***>

forki avatar Nov 15 '25 17:11 forki

@forki Thanks! I am trying it and using framework: net10.0 it builds. Only I get a lot of

warning NU1510: PackageReference System.Reflection.Metadata will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary

warnings.

I can switch the pruning feature off. But it seems a very useful feature. Is this something that will be available via paket as well?

halcwb avatar Nov 15 '25 18:11 halcwb

I've tried 10.0.0-alpha011 and there is some weird interaction going on with test projects and paket.

With NuGet, if I add my test packages (nunit3, nunit3testadapter, microsoft.net.test.sdk) I get a project.deps.json that includes microsoft.net.test.sdk as a dependent package, same as on previous runtimes.

With Paket, that is missing from my project.deps.json, so our in-house test environment isn't detecting it as a test project. It still works with VS IDE and dotnet-test CLI. There's nothing obvious in MSBuild XML or binlogs as to how this reference is getting omitted during the build.

This is after needing to set <RestoreEnablePackagePruning>false</RestoreEnablePackagePruning> to disable the pruning as per above, though I wonder if the test package is somehow getting pruned regardless.

yaakov-h avatar Nov 17 '25 07:11 yaakov-h

@forki Thanks! I am trying it and using framework: net10.0 it builds. Only I get a lot of

warning NU1510: PackageReference System.Reflection.Metadata will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary

warnings.

I can switch the pruning feature off. But it seems a very useful feature. Is this something that will be available via paket as well?

@halcwb

I was trying to work out what exactly in intended here by that warning? One thing I noticed that felt a bit odd is looking at a project in Visual Studio it lists a bunch of these under "Packages" (e.g. System.Buffers ...\.nuget\packages\system.buffers\4.6.1) but it seems they are already under "Microsoft.NETCore.App" (e.g. C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\10.0.0\ref\net10.0\System.Buffers.dll). Which doesn't even show the same version number.

Trying to follow it through, paket.lock lists all of these, but only a few actually got added to the project and then caused the prune warnings. They were in MyProject.csproj.net10.0.paket.resolved as like System.Buffers,4.6.1,Transitive,Main,false,true,false,true,. Not sure on the meaning of the booleans there (the paket.dependencies doesn't contain System.Buffers explicitly).

Is this warning saying these are "part of the framework" and should never be added as packages? They should only be added when targeting older versions for compatibility (e.g. if needed System.Buffers in a .NET Framework 4.8 project)?

But it didn't happen when I quickly made a clean project with a couple of NuGets that depend on System.Buffers indirectly, so I am not sure on what triggers that. So possible that is a mess in our 100 projects which have been upgraded by many people over a couple decades.

wnewbery avatar Nov 18 '25 11:11 wnewbery

@forki Thanks! I am trying it and using framework: net10.0 it builds. Only I get a lot of warning NU1510: PackageReference System.Reflection.Metadata will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary warnings. I can switch the pruning feature off. But it seems a very useful feature. Is this something that will be available via paket as well?

@halcwb

I was trying to work out what exactly in intended here by that warning? One thing I noticed that felt a bit odd is looking at a project in Visual Studio it lists a bunch of these under "Packages" (e.g. System.Buffers ...\.nuget\packages\system.buffers\4.6.1) but it seems they are already under "Microsoft.NETCore.App" (e.g. C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\10.0.0\ref\net10.0\System.Buffers.dll). Which doesn't even show the same version number.

Trying to follow it through, paket.lock lists all of these, but only a few actually got added to the project and then caused the prune warnings. They were in MyProject.csproj.net10.0.paket.resolved as like System.Buffers,4.6.1,Transitive,Main,false,true,false,true,. Not sure on the meaning of the booleans there (the paket.dependencies doesn't contain System.Buffers explicitly).

Is this warning saying these are "part of the framework" and should never be added as packages? They should only be added when targeting older versions for compatibility (e.g. if needed System.Buffers in a .NET Framework 4.8 project)?

But it didn't happen when I quickly made a clean project with a couple of NuGets that depend on System.Buffers indirectly, so I am not sure on what triggers that. So possible that is a mess in our 100 projects which have been upgraded by many people over a couple decades.

@wnewbery thanks for the useful suggestion. I could just first remove all dependencies and then add them as like in a fresh new solution with projects.

halcwb avatar Nov 18 '25 11:11 halcwb

P.S. If anybody knows of a tool to resolve all transient dependencies and show the pruned dependency tree, I would love to use that. Currently, I am trying to figure out my project dependency graph manually.

halcwb avatar Nov 18 '25 11:11 halcwb