Skip to content

Add .NET 10 target framework. - #202

Open
tylerwarner33 wants to merge 3 commits into
Autodesk-Forge:mainfrom
tylerwarner33:Add-.NET10-Target-Framework
Open

tylerwarner33 wants to merge 3 commits into
Autodesk-Forge:mainfrom
tylerwarner33:Add-.NET10-Target-Framework

Conversation

@tylerwarner33

Copy link
Copy Markdown
Contributor

Multi-targets Autodesk.Forge.Core and Autodesk.Forge.Core.E2eTestHelpers to net8.0;net10.0, so each package ships a native .NET 10 asset next to the existing .NET 8 asset. net8.0 stays and is listed first, so this is not a breaking change for any existing consumer.

Why now

.NET 8 and .NET 9 both leave support on 10 November 2026. .NET 10 is LTS until 14 November 2028.

Autodesk.Forge.Core is the base of the APS SDK for .NET (Autodesk.SDKManager references it). The APS SDK is adding net10.0 in autodesk-platform-services/aps-sdk-net#260, but its net10.0 builds use the net8.0 assembly of this package until this package has a net10.0 asset.

net9.0 is skipped deliberately. It is an STS release that leaves support on the same day as .NET 8.

Changes

  • Directory.Build.props: <TargetFramework>net8.0</TargetFramework> becomes <TargetFrameworks>net8.0;net10.0</TargetFrameworks>. All 3 projects get it from this file.
  • .github/workflows/dotnet-core.yml: setup-dotnet installs 8.0.x and 10.0.x. SDK 8 cannot build net10.0 (NETSDK1045), so without this change the PR check fails.
  • README.md: the framework badge and the requirements line state .NET 8 and .NET 10.

No dependency version changes. The current test tools (Microsoft.NET.Test.Sdk 17.12.0, xunit 2.9.2, xunit.runner.visualstudio 2.8.2) work on net10.0. Microsoft.Extensions.* 9.0.0 works on net10.0 through its net9.0 asset.

Verification

  • dotnet build Autodesk.Forge.sln -c Release: 0 errors. The only warning is the existing CS0618 in TestForgeConfiguration.cs:41, now once for each framework.
  • dotnet test: 38 of 38 pass on net8.0, and 38 of 38 pass on net10.0.
  • Both packages contain lib/net8.0/ and lib/net10.0/, with a dependency group for each.
  • A consumer app selects lib/net8.0 on .NET 8 and .NET 9, and lib/net10.0 on .NET 10. It runs on .NET 8 and .NET 10.
  • No conflict with the open Dependabot PRs.

Release note for maintainers

This PR does not change <Version> (still 4.1.2). The Publish step in dotnet-core.yml runs on each push to main, so a version change here could publish an unsigned package before the signed release process from #201. Adding a framework is additive, so SemVer suggests 4.2.0. Suggested CHANGELOG entry:

### 4.2.0

* Add .NET 10 target framework. The package now ships `net8.0` and `net10.0` assets.

Please note these items, which I found while testing:

  • The NuGet API key no longer works. The "Publish Signed Package" run on 20 July 2026 failed with 403 (The specified API key is invalid, has expired, or does not have permission to access the specified package.). That is why 4.1.2 is not on nuget.org. The NUGETAPIKEYBYENGOPS secret needs a new key before any release.
  • The Publish step in dotnet-core.yml hides failures. src/Directory.Build.targets sets IgnoreExitCode and ContinueOnError on dotnet nuget push, so that run reported success.
  • Possible follow-ups: Microsoft.Extensions.* 10.0.x, and actions/setup-dotnet@v5 (the v4 action now runs with a Node.js 20 deprecation warning).

🤖 Generated with Claude Code

tylerwarner33 and others added 3 commits September 28, 2026 06:13
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
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.

1 participant