Skip to content

feat(mel)!: Logging.AddSentry() no longer registers IHub or ISentryClient - #5740

Merged
jamescrosswell merged 4 commits into
version7from
feat/logging-registers-only-providers
Oct 19, 2026
Merged

jamescrosswell merged 4 commits into
version7from
feat/logging-registers-only-providers

Conversation

@ric-oliv

@ric-oliv ric-oliv commented Oct 16, 2026 •

Copy link
Copy Markdown
Member

In v7, the Microsoft.Extensions.Logging integration no longer initializes Sentry (#5595), but Logging.AddSentry() still registered IHub, ISentryClient and Func<IHub> in DI, a leftover from when it did. They belong to whatever initializes Sentry. Every UseSentry already registers them: ASP.NET Core, MAUI, Blazor WebAssembly, and the generic host from #5739. This removes them from the logging path, as planned in #5572.

What changes

Changelog Entry

  • builder.Logging.AddSentry() no longer registers IHub, ISentryClient or Func<IHub> in the service collection. UseSentry registers them; apps that initialize Sentry with SentrySdk.Init and inject them now register them themselves

Breaking changes

An app that calls only SentrySdk.Init and Logging.AddSentry() and injects IHub, ISentryClient or Func<IHub> now fails when DI resolves them. For a hosted service, that's when the host starts:

System.InvalidOperationException: Unable to resolve service for type 'Sentry.IHub' while attempting to activate 'Worker'.

The code still compiles. The fix is UseSentry. Where it isn't available, such as Host.CreateApplicationBuilder() on .NET Framework (#5739 adds UseSentry only on IHostBuilder there), register them:

using Sentry;
using Sentry.Extensibility;

builder.Services.AddSingleton<IHub>(HubAdapter.Instance);
builder.Services.AddSingleton<ISentryClient>(HubAdapter.Instance);
builder.Services.AddSingleton<Func<IHub>>(() => HubAdapter.Instance); // only if the app injects Func<IHub>

That's the same object the logging path used to return. I checked it against this change with a scratch app on net10, on the netstandard2.0 builds, and on .NET Framework 4.8 with Host.CreateApplicationBuilder() from Microsoft.Extensions.Hosting 8.0. Without the lines, the host fails to start as above. With them, capture through each type reaches the SDK, follows a second SentrySdk.Init, and keeps working after a second container is built and disposed.

Impact

  • Who's affected: only logging-only apps that inject the hub. Every host integration (ASP.NET Core, Google Cloud Functions, MAUI, Blazor WebAssembly, the generic host) registers it through AddSentry<TOptions>, not the logging path. No sample resolves it on the logging-only path.
  • Failure mode: loud. A DI error names Sentry.IHub; no events are dropped silently.
  • OpenTelemetry: the obsolete TracerProviderBuilder.AddSentry() takes IHub from DI and falls back to SentrySdk.CurrentHub. On the logging-only path it now takes that fallback, so the span processor holds the hub that's current when the tracer provider is built rather than HubAdapter. That only makes a difference if the app initializes Sentry again afterwards.
  • Hot paths and memory: no change. Each provider gets HubAdapter.Instance once, at creation, instead of resolving it from DI.

Tests

  • LoggingBuilderExtensionsTests: the logging path registers no hub; a logger created before a second SentrySdk.Init sends to the new hub; HttpClientFactory still gets the Sentry handler.
  • ServiceCollectionExtensionsTests: the two regression tests from test: pin the multiple-container behaviour behind Func<IHub> #5646 keep their host case. Their logging-only case had a resolved hub to check, which no longer exists; the tests above cover that path. New: with both AddSentry<TOptions> and Logging.AddSentry(), HttpClientFactory gets one Sentry handler.
  • LoggingTests gets the hub from SentrySdk instead of DI.
  • Each new test fails when the behavior it covers is removed (checked by changing the code and running it). The ASP.NET Core test for the redundant-call warning fails if that branch reads the options through HubAdapter.Instance.

Part of #5572.

@codecov

codecov Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 75.00000% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 75.68%. Comparing base (1ce152c) to head (6ac720a).
⚠️ Report is 1 commits behind head on version7.

Files with missing lines Patch % Lines
...try.Extensions.Logging/LoggingBuilderExtensions.cs 75.00% 0 Missing and 1 partial ⚠️
Additional details and impacted files
@@             Coverage Diff              @@
##           version7    #5740      +/-   ##
============================================
+ Coverage     75.60%   75.68%   +0.08%     
============================================
  Files           522      525       +3     
  Lines         19042    19132      +90     
  Branches       3679     3694      +15     
============================================
+ Hits          14396    14480      +84     
- Misses         3810     3812       +2     
- Partials        836      840       +4     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@ric-oliv
ric-oliv force-pushed the feat/logging-registers-only-providers branch from 28538fc to 57931c2 Compare October 16, 2026 16:37
@ric-oliv
ric-oliv marked this pull request as ready for review October 16, 2026 19:28
@github-actions github-actions Bot added the risk: medium PR risk score: medium label Oct 16, 2026
Base automatically changed from feat/generic-host-use-sentry to version7 October 19, 2026 08:26
ric-oliv and others added 4 commits October 19, 2026 10:31
Three LoggingTests resolved IHub from DI only to reach the SDK's hub
after logging, which works only because Logging.AddSentry() registers it.
They now use SentrySdk, which reaches the same hub, so they no longer
depend on that registration.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ient

The logging integration hasn't initialized Sentry since #5595, but it
still registered IHub, ISentryClient and Func<IHub>, a leftover from when
it did. Every UseSentry registers them through AddSentry<TOptions>, so
they belong to whatever initializes Sentry.

Logging.AddSentry() now registers its two logger providers on
HubAdapter.Instance, which always forwards to the current hub, and the
HttpClientFactory filter, so logging-only apps keep their outgoing-HTTP
breadcrumbs and spans. The redundant-call warning still resolves IHub
when it's registered: the host integration registers it, and resolving
it starts the SDK, so the warning shows when Logging.AddSentry() runs
first.

Apps that call only SentrySdk.Init and Logging.AddSentry() and inject
these services now get a DI error when they're resolved, and register
them with HubAdapter.Instance instead.

The regression tests from #5646 keep their host case. Their logging-only case checked a
resolved hub that no longer exists; new LoggingBuilderExtensionsTests
cover that path, including the HttpClientFactory handler.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
AddSentry<TOptions> is its only caller now that Logging.AddSentry()
doesn't use it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Logging.AddSentry() in an app that also calls UseSentry warns through
the hub's options, which a disabled SDK ("Dsn": "") doesn't have.
Codecov reported that branch untested. The test builds the app with an
empty DSN, with Logging.AddSentry() before and after UseSentry, and
creates a logger. It fails in both orders when the null check is
removed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ric-oliv
ric-oliv force-pushed the feat/logging-registers-only-providers branch from 57931c2 to 6ac720a Compare October 19, 2026 08:33

@jamescrosswell jamescrosswell left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

LGTM

@jamescrosswell
jamescrosswell merged commit e5d6aab into version7 Oct 19, 2026
40 checks passed
@jamescrosswell
jamescrosswell deleted the feat/logging-registers-only-providers branch October 19, 2026 23:02
jamescrosswell added a commit that referenced this pull request Oct 20, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
jamescrosswell added a commit that referenced this pull request Oct 20, 2026
* chore: update modules/sentry-cocoa to 9.30.2 (#5735)

Co-authored-by: GitHub <noreply@github.com>

* fix: avoid first-chance exception when getting length of non-seekable attachment streams (#5736)

* chore(deps): update Java SDK to v8.61.0 (#5734)

* chore: update scripts/update-java.ps1 to 8.61.0

* fix(android): drop SentryEventProcessor marker interface from bindings

Java SDK 8.61.0 adds io.sentry.internal.eventprocessor.SentryEventProcessor,
an empty internal marker interface extending EventProcessor. The binding
generator surfaces EventProcessor's default methods on it as explicit
interface implementations qualified as `Sentry.JavaSdk.IEventProcessor`
without `global::`, which resolves against IO.Sentry and fails with
CS0538/CS0234. Nothing in .NET uses it, and the generated code for its
implementers is unchanged without it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: GitHub <noreply@github.com>
Co-authored-by: James Crosswell <jamescrosswell@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix: don't upload pre-trim PDBs for trimmed iOS and Mac Catalyst builds (#5732)

* fix: don't upload pre-trim PDBs for trimmed iOS and Mac Catalyst builds

When a trimmer output directory exists, take PDBs only from it
(postprocessed-assemblies, else linked) and scan the output directory
for native symbols only. The outer build of a multi-RID Apple build
leaves PDBs out too, since each RID's inner build uploads its own.

cli.Tests.ps1 gains a Mac Catalyst case, and both Apple cases now check
that every uploaded PDB matches an assembly in the app bundle.

Closes #5728

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: only skip output-directory PDBs on iOS and Mac Catalyst

On desktop the trimmer runs during publish, after Build, so a linked
directory at upload time is left over from an earlier publish. Removing
the PDB types there left a console app's call with no -t at all, and
sentry-cli then uploaded the apphost and runtime dylibs too. Other
platforms now keep main's commands, split over the two calls.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* build(deps): bump the github-actions group across 1 directory with 7 updates (#5738)

* build(deps): bump the github-actions group across 1 directory with 7 updates

Bumps the github-actions group with 7 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [actions/upload-artifact](https://github.com/actions/upload-artifact) | `7.0.1` | `7.0.2` |
| [actions/download-artifact](https://github.com/actions/download-artifact) | `8.0.1` | `8.0.2` |
| [getsentry/craft/.github/workflows/changelog-preview.yml](https://github.com/getsentry/craft) | `2.33.3` | `2.34.1` |
| [github/codeql-action/init](https://github.com/github/codeql-action) | `4.38.2` | `4.38.3` |
| [github/codeql-action/analyze](https://github.com/github/codeql-action) | `4.38.2` | `4.38.3` |
| [actions/create-github-app-token](https://github.com/actions/create-github-app-token) | `3.2.0` | `3.3.0` |
| [getsentry/craft](https://github.com/getsentry/craft) | `2.33.3` | `2.34.1` |



Updates `actions/upload-artifact` from 7.0.1 to 7.0.2
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](actions/upload-artifact@043fb46...cf430e0)

Updates `actions/download-artifact` from 8.0.1 to 8.0.2
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](actions/download-artifact@3e5f45b...9000827)

Updates `getsentry/craft/.github/workflows/changelog-preview.yml` from 2.33.3 to 2.34.1
- [Release notes](https://github.com/getsentry/craft/releases)
- [Changelog](https://github.com/getsentry/craft/blob/master/CHANGELOG.md)
- [Commits](getsentry/craft@4e16427...3f2abdc)

Updates `github/codeql-action/init` from 4.38.2 to 4.38.3
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@2892aa5...24c5418)

Updates `github/codeql-action/analyze` from 4.38.2 to 4.38.3
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@2892aa5...24c5418)

Updates `actions/create-github-app-token` from 3.2.0 to 3.3.0
- [Release notes](https://github.com/actions/create-github-app-token/releases)
- [Changelog](https://github.com/actions/create-github-app-token/blob/main/CHANGELOG.md)
- [Commits](actions/create-github-app-token@bcd2ba4...64ab729)

Updates `getsentry/craft` from 2.33.3 to 2.34.1
- [Release notes](https://github.com/getsentry/craft/releases)
- [Changelog](https://github.com/getsentry/craft/blob/master/CHANGELOG.md)
- [Commits](getsentry/craft@4e16427...3f2abdc)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: 7.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: actions/download-artifact
  dependency-version: 8.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: getsentry/craft/.github/workflows/changelog-preview.yml
  dependency-version: 2.34.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: github/codeql-action/init
  dependency-version: 4.38.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: github/codeql-action/analyze
  dependency-version: 4.38.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: actions/create-github-app-token
  dependency-version: 3.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: getsentry/craft
  dependency-version: 2.34.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>

* ci(release): Pass the release bot's client ID as client-id

create-github-app-token deprecated app-id in favor of client-id, so every release run logs a deprecation warning. The action reads client-id first and falls back to app-id, so the token it creates stays the same.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Ricardo Colombo Oliveira <github@ricoliv.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* chore: update modules/sentry-native to 0.17.4 (#5743)

Co-authored-by: GitHub <noreply@github.com>

* fix: run Sentry CLI targets after Native AOT optimized publish (#5731)

From RC 2 the .NET 11 SDK publishes Native AOT apps without running Build:
UseOptimizedPublish defaults to true when PublishAot is set, and Publish depends on
_PublishOptimizedBuildAlternative, which runs only Compile and the publish targets
(dotnet/sdk#54515). CheckSentryCLI, which every upload and release target depends on,
hooked AfterTargets="Build", so symbol upload and release creation silently stopped.
This is decided by the SDK, not the TFM, so net8.0-net10.0 apps are affected too.

CheckSentryCLI, _CreateSentryRelease and _SentrySetCommits now also run after
_PublishOptimizedBuildAlternative. Ported by hand from the version7 fix: _GetSentryRelease
already runs after PrepareSentryCLI on main, so it needs no change.

Fixes #5727

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* feat(hangfire): send the recurring job's cron schedule as the monitor config (#5665)

* feat(hangfire): Send recurring job schedule as monitor config

Opt-in via UseSentry(o => o.SendRecurringJobSchedule = true). The
in-progress check-in of a recurring job carries the job's cron and time
zone so Sentry can create the monitor. Unsupported schedules fall back
to a check-in without config.

Co-Authored-By: Claude <noreply@anthropic.com>

* ref(hangfire): Validate the recurring job schedule before capturing

Check the crontab up front so the check-in goes out in a single call
instead of relying on the hub to swallow an exception from Interval.
The validator is shared with Sentry.Hangfire as a linked source file,
since the unsigned assembly can't see Sentry's internals.

Read the job through GetRecurringJobs, look up time zones with
FindSystemTimeZoneById on .NET 6+, and add tests for UTC, unknown
zones, deleted jobs, the UseSentry overload, and a real recurring job.

Co-Authored-By: Claude <noreply@anthropic.com>

* test(hangfire): Skip time zone tests when the zone is missing

The linux-musl CI containers have no time zone database, so lookups
of Europe/Berlin and Etc/UTC fail there.

Co-Authored-By: Claude <noreply@anthropic.com>

* fix(hangfire): Skip schedules Sentry would read differently

Hangfire runs a job only on days that match both the day-of-month and
day-of-week fields, while Sentry runs it on days that match either
unless one of them starts with '*'. Don't send those schedules, nor
ones with a reversed range such as 5-1 or SAT-SUN, which Sentry
rejects.

Co-Authored-By: Claude <noreply@anthropic.com>

* feat(hangfire): Send recurring job schedules by default

Jobs are only monitored when they have [SentryMonitorSlug], so sending
the recurring job's schedule lets Sentry create or update the monitor,
like the Spring and Quartz integrations. Set SendRecurringJobSchedule
to false to keep managing the schedule in Sentry.

Co-Authored-By: Claude <noreply@anthropic.com>

* fix(hangfire): Create the check-in ID before the in-progress check-in

The final check-in reused the ID returned for the in-progress one, which
is empty when that one isn't captured. Create the ID up front, send it
with the in-progress check-in, and store it in the job's items as before.

Co-Authored-By: Claude <noreply@anthropic.com>

* ref(hangfire): Rename SendRecurringJobSchedule to SendMonitorConfig

Matches SentryQuartzOptions.SendMonitorConfig.

Co-Authored-By: Claude <noreply@anthropic.com>

* feat(hangfire): Don't send a monitor config when recurring jobs share a slug with different schedules

* fix(hangfire): Don't treat a recurring job as conflicting with its own cached schedule

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>

* fix(maui): report in_foreground for apps using the UIScene lifecycle (#5730)

* fix(maui): report in_foreground for apps using the UIScene lifecycle

Sentry.Maui set InForeground from the application-level OnActivated,
OnResignActivation and DidEnterBackground events. For apps using the UIScene
lifecycle, which Xcode 27 requires, MAUI raises SceneOnActivated and friends
instead, so InForeground stayed null and in_foreground disappeared from every
iOS and Mac Catalyst event.

The iOS integration test now asserts "in_foreground":true; without the
Scene* handlers it fails in both Release and Debug.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
(cherry picked from commit e75e6c9)

* test(maui): adopt the UIScene lifecycle in the iOS integration test app

The new "in_foreground":true assertion only guards the Scene* handlers if
the app runs under scenes; otherwise the application-level OnActivated
handler still sets InForeground and the assertion passes without the fix.

UIKit stops calling the application-level OnActivated under scenes, so the
OnActivated test hook moves to the SceneDelegate. Mirrors what #5725 did for
integration-test/maui-device on version7.

Refs #5726

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(maui): keep in_foreground true while another window is active

Opening a second window on iPad fires SceneOnResignActivation and
SceneDidEnterBackground for the first scene after SceneOnActivated for the
second, so InForeground ended up false while the app was in use. Resign and
background now leave it true if another connected scene is ForegroundActive.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* build(deps): bump dotnet-sdk from 10.0.401 to 10.0.402 (#5737)

* build(deps): bump dotnet-sdk from 10.0.401 to 10.0.402

Bumps [dotnet-sdk](https://github.com/dotnet/sdk) from 10.0.401 to 10.0.402.
- [Release notes](https://github.com/dotnet/sdk/releases)
- [Commits](dotnet/sdk@v10.0.401...v10.0.402)

---
updated-dependencies:
- dependency-name: dotnet-sdk
  dependency-version: 10.0.402
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build: keep workload set 10.0.401 with SDK 10.0.402

Workload set 10.0.402 moves the iOS/MacCatalyst/macOS packs to 27.0.10722,
which requires Xcode 27.0 and drops iOS 26.5 as a TargetPlatformVersion.
The macos-26 runners only ship Xcode 26.x (Xcode 27 is a preview image), so
keep the 10.0.401 workload set, which is in the same 10.0.400 feature band.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Revert "build: keep workload set 10.0.401 with SDK 10.0.402"

This reverts commit fcfffea.

* ci: move to Xcode 27 for the 10.0.402 workload set

Workload set 10.0.402 ships the iOS/MacCatalyst/macOS 27.0.10722 packs,
which require Xcode 27.0 and drop iOS 26.5 as a TargetPlatformVersion.

- Run macOS jobs on the xcode-27 runner image and pin Xcode 27.0
- Target iOS 27.0 in the device test apps and simulator lookup
- Disable PRI generation for Sentry.Maui's Windows TFM on macOS: MAUI
  10.0.110 ships Microsoft.Maui.Controls.pri, so the WinAppSDK targets
  now invoke makepri.exe, which can't run on macOS

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(apple): adopt the UIScene lifecycle in the iOS and Mac Catalyst apps

Apps built with the Xcode 27 SDKs must use the UIScene lifecycle, or they
sit on the launch screen. Port of f673d4b from #5725 (version7), with
integration-test/maui-device mapped to integration-test/net9-maui.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* build: fix Mac Catalyst/macOS minimums and IL2037 on the 27.0 packs

- The 27.0 packs require Mac Catalyst 17.0 and macOS 14.0 for apps; raise
  the samples to match (as version7 already does)
- The net10 iOS 27.0 pack emits spurious IL2037 for explicit-interface
  members in MAUI Compatibility (dotnet/macios#26529, fixed in .NET 11
  only), which TreatWarningsAsErrors turns into a device test app failure

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* ci: bump XHarness to 11.0.0-prerelease.26506.3 for Xcode 27

The older mlaunch looks for Simulator.app where Xcode 27 no longer ships it
(MT1008), so ios-tests failed to launch the app. Same bump as #5725.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: James Crosswell <jamescrosswell@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* docs: hand-written release notes for 7.0.0

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* build: keep the prerelease suffix until VersionPrefix has its own label

Removing it in #5747 made Release builds pack as stable 7.0.0, which
NuGet rejects (NU5104) while the packages depend on .NET 11 RC packages.
The suffix now only applies to a bare prefix, so craft's bump to
7.0.0-rc.2 still publishes as exactly 7.0.0-rc.2.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Apply batched suggestions from code review

Co-authored-by: James Crosswell <jamescrosswell@users.noreply.github.com>

* test: ask MSBuild for the package version in the integration tests

The hand-written Directory.Build.props parser couldn't follow the new
conditional VersionSuffix: PowerShell returned the XmlElement, so the
tests looked for Sentry.7.0.0-System.Xml.XmlElement.nupkg.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* test: pick the version line from MSBuild's output and report failures

On the macOS runner the version lookup failed with no detail, because
MSBuild's output was discarded. Match the version line instead of taking
the last one, and include the exit code and output when it fails.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* docs: add #5740 to the 7.0.0 release notes

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* test: read the package version from the built package in CI

The publishing build runs the integration tests in a sparse checkout
that has the built packages but no Sentry.csproj, so MSBuild couldn't
evaluate the version there (MSB1009). Local runs still ask MSBuild.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* test: expect CoreCLR debug files in the Mac Catalyst CLI test

The test came from main (#5732), where MAUI on .NET 10 runs on Mono.
version7 runs this suite on .NET 11, where Mac Catalyst uses CoreCLR,
so the uploads match the iOS test's list plus maui-app.r2r.dylib and
Microsoft.MacCatalyst.pdb.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: GitHub <noreply@github.com>
Co-authored-by: Stefan Jandl <reg@bitfox.at>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Ricardo Colombo Oliveira <github@ricoliv.com>
Co-authored-by: Dan Fuller <dfuller@sentry.io>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk: medium PR risk score: medium

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants