Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(deps): update .NET SDK to v4.1.1 #95

Open
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

github-actions[bot]
Copy link

Bumps src/sentry-dotnet from 3.34.0 to 4.1.1.

Auto-generated by a dependency updater.

Changelog

4.1.1

Fixes

  • The SDK can be disabled by setting options.Dsn = ""; By convention, the SDK allows the DSN set to string.Empty to be overwritten by the environment. (#3147)

Dependencies

4.1.0

Features

  • The SDK now automatically collects metrics coming from OpenTelemetry.Instrumentation.Runtime (#3133)

Fixes

  • "No service for type 'Sentry.IHub' has been registered" exception when using OpenTelemetry and initializing Sentry via SentrySdk.Init (#3129)

4.0.3

Fixes

  • To resolve conflicting types due to the SDK adding itself to the global usings:
    • The class Sentry.Constants has been renamed to Sentry.SentryConstants (#3125)

4.0.2

Fixes

  • To resolve conflicting types due to the SDK adding itself to the global usings:
    • The class Sentry.Context has been renamed to Sentry.SentryContext (#3121)
    • The class Sentry.Package has been renamed to Sentry.SentryPackage (#3121)
    • The class Sentry.Request has been renamed to Sentry.SentryRequest (#3121)

Dependencies

4.0.1

Fixes

  • To resolve conflicting types due to the SDK adding itself to the global usings:
    • The interface Sentry.ISession has been renamed to Sentry.ISentrySession (#3110)
    • The interface Sentry.IJsonSerializable has been renamed to Sentry.ISentryJsonSerializable (#3116)
    • The class Sentry.Session has been renamed to Sentry.SentrySession (#3110)
    • The class Sentry.Attachment has been renamed to Sentry.SentryAttachment (#3116)
    • The class Sentry.Hint has been renamed to Sentry.SentryHint (#3116)

Dependencies

4.0.0

This major release includes many exciting new features including support for Profiling and Metrics(preview), AOT with Native Crash Reporting, Spotlight, Screenshots on MAUI and much more. Details about these features and other changes are below.

.NET target framework changes

We're dropping support for some of the old target frameworks, please check this GitHub Discussion for details on why.

  • Replace support for .NET Framework 4.6.1 with 4.6.2 (#2786)

    .NET Framework 4.6.1 was announced on Nov 30, 2015. And went out of support over a year ago, on Apr 26, 2022.

  • Drop .NET Core 3.1 and .NET 5 support (#2787)

  • Dropped netstandard2.0 support for Sentry.AspNetCore (#2807)

  • Replace support for .NET 6 on mobile (e.g: net6.0-android) with .NET 7 (#2624)

    .NET 6 on mobile has been out of support since May 2023 and with .NET 8, it's no longer possible to build .NET 6 Mobile specific targets.
    For that reason, we're moving the mobile-specific TFMs from net6.0-platform to net7.0-platform.

    Mobile apps still work on .NET 6 will pull the Sentry .NET 6, which offers the .NET-only features,
    without native/platform-specific bindings and SDKs. See this ticket for more details.

  • MAUI dropped Tizen support (#2734)

Sentry Self-hosted Compatibility

If you're using sentry.io this change does not affect you.
This SDK version is compatible with a self-hosted version of Sentry 22.12.0 or higher. If you are using an older version of self-hosted Sentry (aka on-premise), you will need to upgrade.

Significant change in behavior

  • Transaction names for ASP.NET Core are now consistently named HTTP-VERB /path (e.g. GET /home). Previously, the leading forward slash was missing for some endpoints. (#2808)
  • Setting SentryOptions.Dsn to null now throws ArgumentNullException during initialization. (#2655)
  • Enable CaptureFailedRequests by default (#2688)
  • Added Sentry namespace to global usings when ImplicitUsings is enabled (#3043)
    If you have conflicts, you can opt out by adding the following to your csproj:
<PropertyGroup>
  <SentryImplicitUsings>false</SentryImplicitUsings>
</PropertyGroup>
  • Transactions' spans are no longer automatically finished with the status deadline_exceeded by the transaction. This is now handled by the Relay.
    • Customers self hosting Sentry must use verion 22.12.0 or later (#3013)
  • The User.IpAddress is now set to {{auto}} by default, even when sendDefaultPII is disabled (#2981)
    • The "Prevent Storing of IP Addresses" option in the "Security & Privacy" project settings on sentry.io can be used to control this instead
  • The DiagnosticLogger signature for LogWarning changed to take the exception as the first parameter. That way it no longer gets mixed up with the TArgs. (#2987)

API breaking Changes

If you have compilation errors you can find the affected types or overloads missing in the changelog entries below.

Changed APIs
  • Class renamed Sentry.User to Sentry.SentryUser (#3015)
  • Class renamed Sentry.Runtime to Sentry.SentryRuntime (#3016)
  • Class renamed Sentry.Span to Sentry.SentrySpan (#3021)
  • Class renamed Sentry.Transaction to Sentry.SentryTransaction (#3023)
  • Rename iOS and MacCatalyst platform-specific options from Cocoa to Native (#2940)
  • Rename iOS platform-specific options EnableCocoaSdkTracing to EnableTracing (#2940)
  • Rename Android platform-specific options from Android to Native (#2940)
  • Rename Android platform-specific options EnableAndroidSdkTracing and EnableAndroidSdkBeforeSend to EnableTracing and EnableBeforeSend respectively (#2940)
  • Rename iOS and MacCatalyst platform-specific options from iOS to Cocoa (#2929)
  • ITransaction has been renamed to ITransactionTracer. You will need to update any references to these interfaces in your code to use the new interface names (#2731, #2870)
  • DebugImage and DebugMeta moved to Sentry.Protocol namespace. (#2815)
  • SentryClient.Dispose is no longer obsolete (#2842)
  • ISentryClient.CaptureEvent overloads have been replaced by a single method accepting optional Hint and Scope parameters. You will need to pass hint as a named parameter from code that calls CaptureEvent without passing a scope argument. (#2749)
  • TransactionContext and SpanContext constructors were updated. If you're constructing instances of these classes, you will need to adjust the order in which you pass parameters to these. (#2694, #2696)
  • The DiagnosticLogger signature for LogError and LogFatal changed to take the exception as the first parameter. That way it no longer gets mixed up with the TArgs. The DiagnosticLogger now also receives an overload for LogError and LogFatal that accepts a message only. (#2715)
  • Distribution added to IEventLike. (#2660)
  • StackFrame's ImageAddress, InstructionAddress, and FunctionId changed to long?. (#2691)
  • DebugImage.ImageAddress changed to long?. (#2725)
  • Contexts now inherit from IDictionary rather than ConcurrentDictionary. The specific dictionary being used is an implementation detail. (#2729)
  • The method used to configure a Sentry Sink for Serilog now has an additional overload. Calling WriteTo.Sentry() with no arguments will no longer attempt to initialize the SDK (it has optional arguments to configure the behavior of the Sink only). If you want to initialize Sentry at the same time you configure the Sentry Sink then you will need to use the overload of this method that accepts a DSN as the first parameter (e.g. WriteTo.Sentry("https://d4d82fc1c2c4032a83f3a29aa3a3afffake-sentry.io:65535/2147483647")). (#2928)
Removed APIs
  • SentrySinkExtensions.ConfigureSentrySerilogOptions is now internal. If you were using this method, please use one of the SentrySinkExtensions.Sentry extension methods instead. (#2902)

  • A number of [Obsolete] options have been removed (#2841)

    • BeforeSend - use SetBeforeSend instead.
    • BeforeSendTransaction - use SetBeforeSendTransaction instead.
    • BeforeBreadcrumb - use SetBeforeBreadcrumb instead.
    • CreateHttpClientHandler - use CreateHttpMessageHandler instead.
    • ReportAssemblies - use ReportAssembliesMode instead.
    • KeepAggregateException - this property is no longer used and has no replacement.
    • DisableTaskUnobservedTaskExceptionCapture method has been renamed to DisableUnobservedTaskExceptionCapture.
    • DebugDiagnosticLogger - use TraceDiagnosticLogger instead.
  • A number of iOS/Android-specific [Obsolete] options have been removed (#2856)

    • Distribution - use SentryOptions.Distribution instead.
    • EnableAutoPerformanceTracking - use SetBeforeSendTransaction instead.
    • EnableCoreDataTracking - use EnableCoreDataTracing instead.
    • EnableFileIOTracking - use EnableFileIOTracing instead.
    • EnableOutOfMemoryTracking - use EnableWatchdogTerminationTracking instead.
    • EnableUIViewControllerTracking - use EnableUIViewControllerTracing instead.
    • StitchAsyncCode - no longer available.
    • ProfilingTracesInterval - no longer available.
    • ProfilingEnabled - use ProfilesSampleRate instead.
  • Obsolete SystemClock constructor removed, use SystemClock.Clock instead. (#2856)

  • Obsolete Runtime.Clone() removed, this shouldn't have been public in the past and has no replacement. (#2856)

  • Obsolete SentryException.Data removed, use SentryException.Mechanism.Data instead. (#2856)

  • Obsolete AssemblyExtensions removed, this shouldn't have been public in the past and has no replacement. (#2856)

  • Obsolete SentryDatabaseLogging.UseBreadcrumbs() removed, it is called automatically and has no replacement. (#2856)

  • Obsolete Scope.GetSpan() removed, use Span property instead. (#2856)

  • Obsolete IUserFactory removed, use ISentryUserFactory instead. (#2856, #2840)

  • IHasMeasurements has been removed, use ISpanData instead. (#2659)

  • IHasBreadcrumbs has been removed, use IEventLike instead. (#2670)

  • ISpanContext has been removed, use ITraceContext instead. (#2668)

  • IHasTransactionNameSource has been removed, use ITransactionContext instead. (#2654)

  • (#2694)

  • The unused StackFrame.InstructionOffset has been removed. (#2691)

  • The unused Scope.Platform property has been removed. (#2695)

  • The obsolete setter Sentry.PlatformAbstractions.Runtime.Identifier has been removed (2764)

  • Sentry.Values<T> is now internal as it is never exposed in the public API (#2771)

  • The TracePropagationTarget class has been removed, use the SubstringOrRegexPattern class instead. (#2763)

  • The WithScope and WithScopeAsync methods have been removed. We have discovered that these methods didn't work correctly in certain desktop contexts, especially when using a global scope. (#2717)

    Replace your usage of WithScope with overloads of Capture* methods:

    • SentrySdk.CaptureEvent(SentryEvent event, Action<Scope> scopeCallback)
    • SentrySdk.CaptureMessage(string message, Action<Scope> scopeCallback)
    • SentrySdk.CaptureException(Exception exception, Action<Scope> scopeCallback)
    // Before
    SentrySdk.WithScope(scope =>
    {
      scope.SetTag("key", "value");
      SentrySdk.CaptureEvent(new SentryEvent());
    });
    
    // After
    SentrySdk.CaptureEvent(new SentryEvent(), scope =>
    {
      // Configure your scope here
      scope.SetTag("key", "value");
    });

Features

  • Experimental pre-release availability of Metrics. We're exploring the use of Metrics in Sentry. The API will very likely change and we don't yet have any documentation. (#2949)
    • SentrySdk.Metrics.Set now additionally accepts string as value (#3092)
    • Timing metrics can now be captured with SentrySdk.Metrics.StartTimer (#3075)
    • Added support for capturing built-in metrics from the System.Diagnostics.Metrics API (#3052)
  • Sentry.Profiling is now available as a package on nuget. Be aware that profiling is in alpha and on servers the overhead could be high. Improving the experience for ASP.NET Core is tracked on this issue (#2800)
    • iOS profiling support (alpha). (#2930)
  • Native crash reporting on NativeAOT published apps (Windows, Linux, macOS). (#2887)
  • Support for Spotlight, a debug tool for local development. (#2961)
    • Enable it with the option EnableSpotlight
    • Optionally configure the URL to connect via SpotlightUrl. Defaults to http://localhost:8969/stream.

MAUI

  • Added screenshot capture support for errors. You can opt-in via SentryMauiOptions.AttachScreenshots (#2965)
    • Supports Android and iOS only. Windows is not supported.
  • App context now has in_foreground, indicating whether the app was in the foreground or the background. (#2983)
  • Android: When capturing unhandled exceptions, the SDK now can automatically attach LogCat to the event. You can opt-in via SentryOptions.Android.LogCatIntegration and configure SentryOptions.Android.LogCatMaxLines. (#2926)
    • Available when targeting net7.0-android or later, on API level 23 or later.
Native AOT

Native AOT publishing support for .NET 8 has been added to Sentry for the following platforms:

  • Windows
  • Linux
  • macOS
  • Mac Catalyst
  • iOS

There are some functional differences when publishing Native AOT:

  • StackTraceMode.Enhanced is ignored because it's not available when publishing Native AOT. The mechanism to generate these enhanced stack traces relies heavily on reflection which isn't compatible with trimming.
  • Reflection cannot be leveraged for JSON Serialization and you may need to use SentryOptions.AddJsonSerializerContext to supply a serialization context for types that you'd like to send to Sentry (e.g. in the Span.Context). (#2732, #2793)
  • Ben.Demystifier is not available as it only runs in JIT mode.
  • WinUI applications: When publishing Native AOT, Sentry isn't able to automatically register an unhandled exception handler because that relies on reflection. You'll need to register the unhandled event handler manually instead.
  • For Azure Functions Workers, when AOT/Trimming is enabled we can't use reflection to read route data from the HttpTrigger so the route name will always be /api/<FUNCTION_NAME> (#2920)

Fixes

  • Native integration logging on macOS (#3079)
  • The scope transaction is now correctly set for Otel transactions (#3072)
  • Fixed an issue with tag values in metrics not being properly serialized (#3065)
  • Moved the binding to MAUI events for breadcrumb creation from WillFinishLaunching to FinishedLaunching. This delays the initial instantiation of app. (#3057)
  • The SDK no longer adds the WinUIUnhandledExceptionIntegration on non-Windows platforms (#3055)
  • Stop Sentry for MacCatalyst from creating default.profraw in the app bundle using xcodebuild archive to build sentry-cocoa (#2960)
  • Workaround a .NET 8 NativeAOT crash on transaction finish. (#2943)
  • Reworked automatic breadcrumb creation for MAUI. (#2900)
    • The SDK no longer uses reflection to bind to all public element events. This also fixes issues where the SDK would consume third-party events.
    • Added CreateElementEventsBreadcrumbs to the SentryMauiOptions to allow users to opt-in automatic breadcrumb creation for BindingContextChanged, ChildAdded, ChildRemoved, and ParentChanged on Element.
    • Reduced amount of automatic breadcrumbs by limiting the number of bindings created in VisualElement, Window, Shell, Page, and Button.
  • Fixed Sentry SDK has not been initialized when using ASP.NET Core, Serilog, and OpenTelemetry (#2911)
  • Android native symbol upload (#2876)
  • Sentry.Serilog no longer throws if a disabled DSN is provided when initializing Sentry via the Serilog integration (#2883)
  • Don't add WinUI exception integration on mobile platforms (#2821)
  • Transactions are now getting enriched by the client instead of the hub (#2838)
  • Fixed an issue when using the SDK together with OpenTelemetry 1.5.0 and newer where the SDK would create transactions for itself. The fix is backward compatible. (#3001)

Dependencies

3.41.4

Fixes

  • Fixed an issue when using the SDK together with Open Telemetry 1.5.0 and newer where the SDK would create transactions for itself. The fix is backward compatible. (#3001)

3.41.3

Fixes

  • Fixed Sentry SDK has not been initialised when using ASP.NET Core, Serilog, and OpenTelemetry (#2918)

3.41.2

Fixes

Dependencies

3.41.1

Fixes

  • CaptureFailedRequests and FailedRequestStatusCodes are now getting respected by the Cocoa SDK. This is relevant for MAUI apps where requests are getting handled natively. (#2826)
  • Added SentryOptions.AutoRegisterTracing for users who need to control registration of Sentry's tracing middleware (#2871)

Dependencies

3.41.0

Features

  • Speed up SDK init (#2784)

Fixes

  • Fixed chaining on the IApplicationBuilder for methods like UseRouting and UseEndpoints (#2726)

Dependencies

3.40.1

Fixes

  • ISentryUserFactory is now public so users can register their own implementations via DI (#2719)

3.40.0

Obsoletion

  • WithScope and WithScopeAsync have been proven to not work correctly in desktop contexts when using a global scope. They are now deprecated in favor of the overloads of CaptureEvent, CaptureMessage, and CaptureException. Those methods provide a callback to a configurable scope. (#2677)
  • StackFrame.InstructionOffset has not been used in the SDK and has been ignored on the server for years. (#2689)

Features

  • Release of Azure Functions (Isolated Worker/Out-of-Process) support (#2686)

Fixes

  • Scope is now correctly applied to Transactions when using OpenTelemetry on ASP.NET Core (#2690)

Dependencies

3.40.0-beta.0

Features

  • Reduced the memory footprint of SpanId by refactoring the ID generation (#2619)
  • Reduced the memory footprint of SpanTracer by initializing the tags lazily (#2636)
  • Added distributed tracing without performance for Azure Function Workers (#2630)
  • The SDK now provides and overload of ContinueTrace that accepts headers as string (#2601)
  • Sentry tracing middleware now gets configured automatically (#2602)
  • Added memory optimisations for GetLastActiveSpan (#2642)

Fixes

  • Resolved issue identifying users with OpenTelemetry (#2618)

Azure Functions Beta

  • Package name changed from Sentry.AzureFunctions.Worker to Sentry.Azure.Functions.Worker. Note AzureFunctions now is split by a .. (#2637)

Dependencies

3.39.1

Fixes

  • Added Sentry.AspNet.csproj back to Sentry-CI-Build-macOS.slnf (#2612)

3.39.0

Features

  • Added additional DB attributes to automatically generated spans like name and provider (#2583)
  • Hints now accept attachments provided as a file path via AddAttachment method (#2585)

Fixes

  • Resolved an isse where the SDK would throw an exception while attempting to set the DynamicSamplingContext but the context exists already. (#2592)

Dependencies

3.36.0

Features

Fixes

  • Android: Fix proguard/r8 mapping file upload (#2574)

Dependencies

3.35.1

Fixes

  • The SDK no longer creates transactions with their start date set to Jan 01, 001 (#2544)

Dependencies

3.35.0

Features

  • Distributed tracing now works independently of the performance feature. This allows you to connect errors to other Sentry instrumented applications (#2493)
  • Added Sampling Decision to Trace Envelope Header (#2495)
  • Add MinimumEventLevel to Sentry.Log4Net and convert events below it to breadcrumbs (#2505)
  • Support transaction finishing automatically with 'idle timeout' (#2452)

Fixes

  • Fixed baggage propagation when an exception is thrown from middleware (#2487)
  • Fix Durable Functions preventing orchestrators from completing (#2491)
  • Re-enable HubTests.FlushOnDispose_SendsEnvelope (#2492)
  • Fixed SDK not sending exceptions via Blazor WebAssembly due to a PlatformNotSupportedException (#2506)
  • Align SDK with docs regarding session update for dropped events (#2496)
  • Introduced HttpMessageHandler in favor of the now deprecated HttpClientHandler on the options. This allows the SDK to support NSUrlSessionHandler on iOS (#2503)
  • Using Activity.RecordException now correctly updates the error status of OpenTelemetry Spans (#2515)
  • Fixed Transaction name not reporting correctly when using UseExceptionHandler (#2511)
  • log4net logging Level.All now maps to SentryLevel.Debug (#2522)

Dependencies

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
2 participants