Skip to content

Release readiness: Source Link + symbols, and .NET 10 dependency refresh - #8

Merged
timonkrebs merged 4 commits into
mainfrom
claude/charming-bell-iq2emr
Jul 20, 2026
Merged

Release readiness: Source Link + symbols, and .NET 10 dependency refresh#8
timonkrebs merged 4 commits into
mainfrom
claude/charming-bell-iq2emr

Conversation

@timonkrebs

@timonkrebs timonkrebs commented Jun 20, 2026

Copy link
Copy Markdown
Owner

Two release-readiness changes on one branch — happy to split into separate PRs if you'd prefer.

1. Source Link + symbols + deterministic builds

Makes published packages debuggable and reproducible:

  • Source Link — bundled in the .NET SDK (8+); set PublishRepositoryUrl + EmbedUntrackedSources.
  • SymbolsIncludeSymbols + snupkg, pushed explicitly (dotnet nuget push doesn't pair .snupkg from a subdirectory — NuGet/Home#8016; thanks Codex).
  • DeterministicContinuousIntegrationBuild on CI only.

2. .NET 10 dependency refresh

The project already targets net10.0; this bumps the version-tied packages to current stable:

  • Roslyn 4.14 → 5.3.0, MSBuild 17.7 → 18.7.1, Test.Sdk 17.11 → 18.6.0
  • MSTest 3.11 → 4.2.3, NUnit3TestAdapter 4.6 → 6.2.0, xUnit 2.9.2 → 2.9.3 (runner 2.8.2 → 3.1.5)
  • TUnit 0.25.21 → 1.56.18, coverlet 6 → 10.0.1, Microsoft.Extensions.* 8.0 → 10.0.9
  • Already-latest (unchanged): NUnit 4.6.1, FileSystemGlobbing 10.0.9, Build.Locator 1.11.2, NetArchTest.Rules 1.3.2.

TUnit 1.x is Microsoft.Testing.Platform-only and dropped the VSTest bridge, so on the .NET 10 SDK it can't run under the unified dotnet test that the VSTest-based xUnit/NUnit/MSTest projects use. The CI and release test steps are split: VSTest projects via dotnet test (auto-discovered by Microsoft.NET.Test.Sdk), TUnit via dotnet run (MTP).

Validated locally on the .NET 10 SDK: builds clean; all suites pass (Core/xUnit 138, MSTest, NUnit, Roslyn+MSBuild, TUnit); betterernet ci dogfood green.

🤖 Generated with Claude Code

https://claude.ai/code/session_01V1phdgDossB7htzxcbZTNF

Make the published packages debuggable and reproducible:

- Source Link ships in the .NET SDK (8+), so no PackageReference is needed.
  Set PublishRepositoryUrl (the one property the SDK does not default) and
  EmbedUntrackedSources so repository + commit metadata is embedded.
- IncludeSymbols + snupkg symbol packages so consumers can step into sources.
  `dotnet nuget push` already pushes the adjacent .snupkg to nuget.org, so the
  release workflow needs no change.
- ContinuousIntegrationBuild on CI only, for deterministic released binaries
  (left off locally to preserve a normal debugging experience).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V1phdgDossB7htzxcbZTNF
Copilot AI review requested due to automatic review settings June 20, 2026 05:56

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e7de1b6876

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread Directory.Build.props
claude added 2 commits June 20, 2026 06:07
dotnet nuget push does not reliably pair a .snupkg located in a subdirectory
(the pack output goes to artifacts/), per NuGet/Home#8016 -- so with IncludeSymbols
enabled the symbol packages were built but never published. Push each .snupkg as
its own step (and --no-symbols on the main push to keep behavior deterministic).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V1phdgDossB7htzxcbZTNF
The project already targets net10.0; this bumps the version-tied packages to
their current stable releases:

- Roslyn (Microsoft.CodeAnalysis.*) 4.14.0 -> 5.3.0
- MSBuild (Microsoft.Build.*, Microsoft.NET.StringTools) 17.7.2 -> 18.7.1
- Microsoft.NET.Test.Sdk 17.11.1 -> 18.6.0
- Microsoft.Extensions.* 8.0.x -> 10.0.9 (InspectCodeSnapshot tool)
- MSTest 3.11.1 -> 4.2.3, NUnit3TestAdapter 4.6.0 -> 6.2.0
- xUnit 2.9.2 -> 2.9.3, xunit.runner.visualstudio 2.8.2 -> 3.1.5
- TUnit 0.25.21 -> 1.56.18, coverlet.collector 6.0.2 -> 10.0.1

TUnit 1.x runs only on Microsoft.Testing.Platform and dropped the VSTest bridge,
so on the .NET 10 SDK it can't run under the unified `dotnet test` used by the
VSTest-based xUnit/NUnit/MSTest projects. Split the CI and release test steps:
discover and run the VSTest projects via `dotnet test`, and run the TUnit project
via `dotnet run` (Microsoft.Testing.Platform).

Builds clean and every suite passes on the .NET 10 SDK (Core/xUnit 138, MSTest,
NUnit, Roslyn+MSBuild, TUnit, and the betterernet ci dogfood).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V1phdgDossB7htzxcbZTNF
@timonkrebs timonkrebs changed the title Add Source Link, symbol packages, and deterministic builds Release readiness: Source Link + symbols, and .NET 10 dependency refresh Jun 20, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: dc3fd7933f

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread tests/BettererNet.TUnit.Tests/BettererNet.TUnit.Tests.csproj
The .NET 10 refresh moved TUnit to its own `dotnet run` (Microsoft.Testing.Platform)
step, but the README "Build & test" section still told contributors to run
`dotnet test BettererNet.sln`, which now errors on the TUnit project on the .NET 10
SDK. Document the VSTest suites and the TUnit suite as separate commands, matching CI.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V1phdgDossB7htzxcbZTNF
@timonkrebs
timonkrebs merged commit c5c4ab8 into main Jul 20, 2026
1 check passed
@timonkrebs
timonkrebs deleted the claude/charming-bell-iq2emr branch July 20, 2026 20:17
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.

3 participants