Releases: getsentry/sentry-dotnet
4.2.0
Features
- ASP.NET Core: Blocking call detection. An event with the stack trace of the blocking call will be captured as event. (#2709)
- IMPORTANT: Verify this in test/staging before prod! Blocking calls in hot paths could create a lot of events for your Sentry project.
- Opt-in via
options.CaptureBlockingCalls = true
- Disabled for specific code blocks with
using (new SuppressBlockingDetection())
- Doesn't detect everything. See original Caveats described by Ben Adams.
- Added Crons support via
SentrySdk.CaptureCheckIn
and an integration with Hangfire (#3128) - Common tags set automatically for metrics and metrics summaries are attached to Spans (#3191)
API changes
- Removed
ScopeExtensions
class - all the public methods moved directly toScope
(#3186)
Fixes
- The Sentry Middleware on ASP.NET Core no longer throws an exception after having been initialized multiple times (#3185)
- Empty strings are used instead of underscores to replace invalid metric tag values (#3176)
- Filtered OpenTelemetry spans are garbage collected correctly (#3198)
Dependencies
4.1.2
4.1.1
4.1.0
4.0.3
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 toSentry.SentryContext
(#3121) - The class
Sentry.Package
has been renamed toSentry.SentryPackage
(#3121) - The class
Sentry.Request
has been renamed toSentry.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 toSentry.ISentrySession
(#3110) - The interface
Sentry.IJsonSerializable
has been renamed toSentry.ISentryJsonSerializable
(#3116) - The class
Sentry.Session
has been renamed toSentry.SentrySession
(#3110) - The class
Sentry.Attachment
has been renamed toSentry.SentryAttachment
(#3116) - The class
Sentry.Hint
has been renamed toSentry.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 fromnet6.0-platform
tonet7.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
tonull
now throwsArgumentNullException
during initialization. (#2655) - Enable
CaptureFailedRequests
by default (#2688) - Added
Sentry
namespace to global usings whenImplicitUsings
is enabled (#3043)
If you have conflicts, you can opt out by adding the following to yourcsproj
:
<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 forLogWarning
changed to take theexception
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
toSentry.SentryUser
(#3015) - Class renamed
Sentry.Runtime
toSentry.SentryRuntime
(#3016) - Class renamed
Sentry.Span
toSentry.SentrySpan
(#3021) - Class renamed
Sentry.Transaction
toSentry.SentryTransaction
(#3023) - Rename iOS and MacCatalyst platform-specific options from
Cocoa
toNative
(#2940) - Rename iOS platform-specific options
EnableCocoaSdkTracing
toEnableTracing
(#2940) - Rename Android platform-specific options from
Android
toNative
(#2940) - Rename Android platform-specific options
EnableAndroidSdkTracing
andEnableAndroidSdkBeforeSend
toEnableTracing
andEnableBeforeSend
respectively (#2940) - Rename iOS and MacCatalyst platform-specific options from
iOS
toCocoa
(#2929) ITransaction
has been renamed toITransactionTracer
. You will need to update any references to these interfaces in your code to use the new interface names (#2731, #2870)DebugImage
andDebugMeta
moved toSentry.Protocol
namespace. (#2815)SentryClient.Dispose
is no longer obsolete (#2842)ISentryClient.CaptureEvent
overloads have been replaced by a single method accepting optionalHint
andScope
parameters. You will need to passhint
as a named parameter from code that callsCaptureEvent
without passing ascope
argument. (#2749)TransactionContext
andSpanContext
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 forLogError
andLogFatal
changed to take theexception
as the first parameter. That way it no longer gets mixed up with the TArgs. TheDiagnosticLogger
now also receives an overload forLogError
andLogFatal
that accepts a message only. (#2715) Distribution
added toIEventLike
. (#2660)StackFrame
'sImageAddress
,InstructionAddress
, andFunctionId
changed tolong?
. (#2691)DebugImage.ImageAddress
changed tolong?
. (#2725)- Contexts now inherit from
IDictionary
rather thanConcurrentDictionary
. 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://d4d82fc1c2c4032a83f3a29aa3a3aff@fake-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
- useSetBeforeSend
instead.BeforeSendTransaction
- useSetBeforeSendTransaction
instead.BeforeBreadcrumb
- useSetBeforeBreadcrumb
instead.CreateHttpClientHandler
- useCreateHttpMessageHandler
instead.ReportAssemblies
- useReportAssembliesMode
instead.KeepAggregateException
- this property is no longer used and has no replacement.DisableTaskUnobservedTaskExceptionCapture
method has been renamed toDisableUnobservedTaskExceptionCapture
.DebugDiagnosticLogger
- useTraceDiagnosticLogger
instead.
- A number of iOS/Android-specific
[Obsolete]
options have been removed (#2856)Distribution
- useSentryOptions.Distribution
instead.EnableAutoPerformanceTracking
- useSetBeforeSendTransaction
instead.EnableCoreDataTracking
- useEnableCoreDataTracing
instead.EnableFileIOTracking
- useEnableFileIOTracing
instead.EnableOutOfMemoryTracking
- useEnableWatchdogTerminationTracking
instead.EnableUIViewControllerTracking
- useEnableUIViewControllerTracing
instead.StitchAsyncCode
- no longer available.ProfilingTracesInterval
- no longer available.ProfilingEnabled
- useProfilesSampleRate
instead.
- Obsolete
SystemClock
constructor removed, useSystemClock.Clock
instead. (#2856) - Obsolete `Runtime.Clone...
4.0.0-beta.9
Features
- Added support for capturing built in metrics from the System.Diagnostics.Metrics API (#3052)
Significant change in behavior
- Added
Sentry
namespace to global usings whenImplicitUsings
is enabled (#3043)
If you have conflicts, you can opt-out by adding the following to yourcsproj
:
<PropertyGroup>
<SentryImplicitUsings>false</SentryImplicitUsings>
</PropertyGroup>
Features
SentrySdk.Metrics.Set
now additionally acceptsstring
as value (#3092)- Timing metrics can now be captured with
SentrySdk.Metrics.StartTimer
(#3075)
Fixes
- Fixed an issue with tag values in metrics not being properly serialized (#3065)
- Moved the binding to MAUI events for breadcrumb creation from
WillFinishLaunching
toFinishedLaunching
. This delays the initial instantiation ofapp
. (#3057) - The SDK no longer adds the
WinUIUnhandledExceptionIntegration
on non Windows platforms (#3055) - The scope transaction is now correctly set for Otel transactions (#3072)
- Native integration logging on macOS (#3079)
- Native linking of cURL library when targeting platform-specific TFMs (e.g.
net8.0-macos
) (#3080)