getsentry/sentry-for-aiApache-2.07 files

Sentry Dotnet SDK

Full Sentry SDK setup for .NET. Use when asked to "add Sentry to .NET", "install Sentry for C#", or configure error monitoring, tracing, profiling, logging, or crons for ASP.NET Core, MAUI, WPF, WinForms, Blazor, Azure Functions, or any other .NET application.

Specification
Skill ID
getsentry/sentry-for-ai/sentry-dotnet-sdk
Publisher
getsentry
Repository
sentry-for-ai
Installs
0
Files
7
License
Apache-2.0
Synced
Sep 23, 2026
How to use it

Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.

getsentry/sentry-for-ai/sentry-dotnet-sdkInstalls these files
  • SKILL.md
  • references/crons.md
  • references/error-monitoring.md
  • references/logging.md
  • references/metrics.md
  • references/profiling.md
  • references/tracing.md

What this skill tells the agent

All Skills > SDK Setup > .NET SDK

Sentry .NET SDK

Opinionated wizard that scans your .NET project and guides you through complete Sentry setup: error monitoring, distributed tracing, profiling, structured logging, and cron monitoring across all major .NET frameworks.

Invoke This Skill When

  • User asks to "add Sentry to .NET", "set up Sentry in C#", or "install Sentry for ASP.NET Core"
  • User wants error monitoring, tracing, profiling, logging, or crons for a .NET app
  • User mentions SentrySdk.Init, UseSentry, Sentry.AspNetCore, or Sentry.Maui
  • User wants to capture unhandled exceptions in WPF, WinForms, MAUI, or Azure Functions
  • User asks about SentryOptions, BeforeSend, TracesSampleRate, or symbol upload
Note: SDK version and APIs below reflect Sentry NuGet packages ≥6.1.0 (OTLP export requires ≥6.5.0). Always verify against docs.sentry.io/platforms/dotnet/ before implementing.

Phase 1: Detect

Run these commands to understand the project before making any recommendations:

# Detect framework type — find all .csproj files
find . -name "*.csproj" | head -20

# Detect framework targets
grep -r "TargetFramework\|Project Sdk" --include="*.csproj" .

# Check for existing Sentry packages
grep -r "Sentry" --include="*.csproj" . | grep "PackageReference"

# Check startup files
ls Program.cs src/Program.cs App.xaml.cs MauiProgram.cs 2>/dev/null

# Check for appsettings
ls appsettings.json src/appsettings.json 2>/dev/null

# Check for logging libraries
grep -r "Serilog\|NLog\|log4net" --include="*.csproj" .

# Check for companion frontend
ls ../frontend ../client ../web 2>/dev/null
cat ../package.json 2>/dev/null | grep -E '"next"|"react"|"vue"' | head -3

What to determine:

QuestionImpact
Framework type?Determines correct package and init pattern
.NET version?.NET 8+ recommended; .NET Framework 4.6.2+ supported
Sentry already installed?Skip install, go to feature config
Logging library (Serilog, NLog)?Recommend matching Sentry sink/target
Async/hosted app (ASP.NET Core)?UseSentry() on WebHost; no IsGlobalModeEnabled needed
Desktop app (WPF, WinForms, WinUI)?Must set IsGlobalModeEnabled = true
Serverless (Azure Functions, Lambda)?Must set FlushOnCompletedRequest = true
Frontend directory found?Trigger Phase 4 cross-link

Framework → Package mapping:

DetectedPackage to install
Sdk="Microsoft.NET.Sdk.Web" (ASP.NET Core)Sentry.AspNetCore
App.xaml.cs with Application baseSentry (WPF)
[STAThread] in Program.csSentry (WinForms)
MauiProgram.csSentry.Maui
WebAssemblyHostBuilderSentry.AspNetCore.Blazor.WebAssembly
FunctionsStartupSentry.Extensions.Logging + Sentry.OpenTelemetry
HttpApplication / Global.asaxSentry.AspNet
Generic host / Worker ServiceSentry.Extensions.Logging

Phase 2: Recommend

Present a concrete recommendation based on what you found. Lead with a proposal — don't ask open-ended questions.

Recommended (core coverage):

  • ✅ Error Monitoring — always; captures unhandled exceptions, structured captures, scope enrichment
  • ✅ Tracing — always for ASP.NET Core and hosted apps; auto-instruments HTTP requests and EF Core queries
  • ✅ Logging — recommended for all apps; routes ILogger / Serilog / NLog entries to Sentry as breadcrumbs and events

Optional (enhanced observability):

  • ⚡ Profiling — CPU profiling; recommend for performance-critical services running on .NET 6+
  • ⚡ Metrics — counters, gauges, distributions linked to traces; recommend for apps that need custom business metrics
  • ⚡ Crons — detect missed/failed scheduled jobs; recommend when Hangfire, Quartz.NET, or scheduled endpoints detected

Recommendation logic:

FeatureRecommend when...
Error MonitoringAlways — non-negotiable baseline
TracingAlways for ASP.NET Core — request traces, EF Core spans, HttpClient spans are high-value
LoggingApp uses ILogger<T>, Serilog, NLog, or log4net
ProfilingPerformance-critical service on .NET 6+
MetricsApp needs custom business metrics (request counts, queue depths, response times)
CronsApp uses Hangfire, Quartz.NET, or scheduled Azure Functions

Propose: "I recommend setting up Error Monitoring + Tracing + Logging. Want me to also add Profiling or Crons?"


Phase 3: Guide

Option 1: Wizard (Recommended)

You need to run this yourself — the wizard opens a browser for login and requires interactive input that the agent can't handle. Copy-paste into your terminal: `` npx @sentry/wizard@latest -i dotnet `` It handles login, org/project selection, DSN configuration, and MSBuild symbol upload setup for readable stack traces in production. Once it finishes, come back and skip to [Verification](#verification).

If the user skips the wizard, proceed with Option 2 (Manual Setup) below.


Option 2: Manual Setup

Install the right package
# ASP.NET Core
dotnet add package Sentry.AspNetCore -v 6.1.0

# WPF or WinForms or Console
dotnet add package Sentry -v 6.1.0

# .NET MAUI
dotnet add package Sentry.Maui -v 6.1.0

# Blazor WebAssembly
dotnet add package Sentry.AspNetCore.Blazor.WebAssembly -v 6.1.0

# Azure Functions (Isolated Worker)
dotnet add package Sentry.Extensions.Logging -v 6.1.0
dotnet add package Sentry.OpenTelemetry -v 6.1.0

# Classic ASP.NET (System.Web / .NET Framework)
dotnet add package Sentry.AspNet -v 6.1.0

ASP.NET Core — Program.cs
var builder = WebApplication.CreateBuilder(args);

builder.WebHost.UseSentry(options =>
{
    options.Dsn = Environment.GetEnvironmentVariable("SENTRY_DSN")
                  ?? "___YOUR_DSN___";
    options.Debug = true;                         // disable in production
    options.SendDefaultPii = true;                // captures user IP, name, email
    options.MaxRequestBodySize = RequestSize.Always;
    options.MinimumBreadcrumbLevel = LogLevel.Debug;
    options.MinimumEventLevel = LogLevel.Warning;
    options.TracesSampleRate = 1.0;               // tune to 0.1–0.2 in production
    options.SetBeforeSend((@event, hint) =>
    {
        @event.ServerName = null;                 // scrub hostname from events
        return @event;
    });
});

var app = builder.Build();
app.Run();

`appsettings.json` (alternative configuration):

{
  "Sentry": {
    "Dsn": "___YOUR_DSN___",
    "SendDefaultPii": true,
    "MaxRequestBodySize": "Always",
    "MinimumBreadcrumbLevel": "Debug",
    "MinimumEventLevel": "Warning",
    "AttachStacktrace": true,
    "Debug": true,
    "TracesSampleRate": 1.0,
    "Environment": "production",
    "Release": "my-app@1.0.0"
  }
}

Environment variables (double underscore as separator):

export Sentry__Dsn="https://examplePublicKey@o0.ingest.sentry.io/0"
export Sentry__TracesSampleRate="0.1"
export Sentry__Environment="staging"

WPF — App.xaml.cs
⚠️ Critical: Initialize in the constructor, NOT in OnStartup(). The constructor fires earlier, catching more failure modes.
using System.Windows;
using Sentry;

public partial class App : Application
{
    public App()
    {
        SentrySdk.Init(options =>
        {
            options.Dsn = "___YOUR_DSN___";
            options.Debug = true;
            options.SendDefaultPii = true;
            options.TracesSampleRate = 1.0;
            options.IsGlobalModeEnabled = true;   // required for all desktop apps
        });

        // Capture WPF UI-thread exceptions before WPF's crash dialog appears

Use this skill in a project

Open any RiverX project, search the Skills panel for getsentry/sentry-for-ai/sentry-dotnet-sdk, and install it in one click.

Use this skill