diff --git a/.cursor/sdk_development.mdc b/.cursor/sdk_development.mdc new file mode 100644 index 0000000000..38796d8c51 --- /dev/null +++ b/.cursor/sdk_development.mdc @@ -0,0 +1,218 @@ +# Sentry .NET SDK Development Guidelines + +This document contains important patterns, conventions, and guidelines learned during SDK development to ensure consistency and avoid common pitfalls. + +## Project Structure & Conventions + +### Project Organization +- **Source packages**: `src/Sentry.Extensions.*` +- **Tests**: `test/Sentry.Extensions.*.Tests` +- **Samples**: `samples/Sentry.Samples.ME.*` (ME = Microsoft.Extensions) +- **Solution file**: `Sentry.sln` in root + +### Naming Conventions +- Extension packages for packages targeting Microsoft.Extensions.Technology: `Sentry.Extensions.{Technology}` +- Sample projects for packages targeting Microsoft.Extensions.Technology: `Sentry.Samples.ME.{Technology}.{ProjectType}` +- Test projects: `{SourceProject}.Tests` + +## Directory.Build.props Pattern + +### Central Package Management +- Some packages are managed centrally in `Directory.Build.props` files +- Check existing projects of the same type (src/test/samples) for reference + +### Hierarchical Structure +``` +/Directory.Build.props # Root level +/src/Directory.Build.props # Source projects +/test/Directory.Build.props # Test projects +/samples/Directory.Build.props # Sample projects +``` + +### Key Properties Set Centrally +- `TargetFrameworks` +- Common package references +- Build configurations +- Analyzer references + +## Sample Project Guidelines + +### DSN Configuration Pattern +**Always use conditional compilation for DSN in samples:** + +```csharp +builder.AddSentry(options => +{ +#if !SENTRY_DSN_DEFINED_IN_ENV + // A DSN is required. You can set here in code, or you can set it in the SENTRY_DSN environment variable. + // See https://docs.sentry.io/product/sentry-basics/dsn-explainer/ + options.Dsn = SamplesShared.Dsn; +#endif + + // Other configuration... +}); +``` + +### Required Sample Files +- **Don't exclude** `SamplesShared.cs` or `EnvironmentVariables.g.cs` +- These provide proper DSN handling for CI/CD environments +- The build system automatically defines `SENTRY_DSN_DEFINED_IN_ENV` when environment variable is set + +### Building and Running Samples +```bash +# Build (requires SENTRY_DSN environment variable) +env SENTRY_DSN=your_dsn dotnet build samples/Project/Project.csproj + +# Run (requires SENTRY_DSN environment variable) +env SENTRY_DSN=your_dsn dotnet run --project samples/Project/Project.csproj +``` + +### Sample Project Structure +Base sample projects on existing ones like `Sentry.Samples.ME.Logging`: +- Target the same TFM (such as `net9.0`) as other projects, for consistency +- Follow the same logging and configuration patterns + +## Extension Package Guidelines + +### Target Frameworks +- Use `net9.0;net8.0` for new extension packages (or whatever is being used on other projects) +- Follow existing patterns in similar extensions + +### Package References +- Check `Directory.Build.props` for centrally managed versions +- Avoid duplicating dependencies already brought in transitively +- Use exact versions for preview packages (e.g., `Microsoft.Extensions.AI`) + +### Internal Visibility +```xml + + + +``` + +### Hub Access Pattern +**Always use automatic hub detection:** +```csharp +// ✅ Good - Automatic hub detection +public static IChatClient WithSentry(this IChatClient client, string? agentName = null) +{ + return new SentryChatClient(client, HubAdapter.Instance, agentName); +} + +// ✅ Good - DI fallback pattern +public static ChatClientBuilder UseSentry(this ChatClientBuilder builder, string? agentName = null) +{ + return builder.Use((serviceProvider, inner) => + { + var hub = serviceProvider.GetService() ?? HubAdapter.Instance; + return new SentryChatClient(inner, hub, agentName); + }); +} + +// ❌ Avoid - Requiring manual hub passing, unless it's for testing so it can be injected. Then use a `internal` overload ctor. +public static IChatClient WithSentry(this IChatClient client, IHub hub, string? agentName = null) +``` + +## Span and Transaction Guidelines + +### Exception Handling in Spans +**Always pass exception reference to Finish():** +```csharp +try +{ + var result = await operation(); + transaction.Finish(SpanStatus.Ok); + return result; +} +catch (Exception ex) +{ + transaction.Finish(ex); // ✅ Pass exception reference + _hub.CaptureException(ex); + throw; +} +``` + + +## Testing Guidelines + +### Test Project Setup +- Target same frameworks as source project +- Reference source project, core Sentry project, and `Sentry.Testing` +- Stay consist with other test projects, for example use `NSubstitute` for mocking + +### Test Structure +```csharp +[Fact] +public async Task Operation_CallsInnerClient() +{ + // Arrange + var inner = Substitute.For(); + var hub = Substitute.For(); + var client = new YourClient(inner, hub); + + // Act & Assert + await client.Method(); + inner.Received(1).Method(); +} +``` + +### Async Enumerable Testing +```csharp +private static async IAsyncEnumerable CreateTestEnumerable() +{ + yield return item1; + await Task.Yield(); // Make it actually async + yield return item2; +} +``` + +## Build and Test Commands + +### Standard Build Commands +```bash +# Build entire solution +dotnet build Sentry.sln + +# Build specific project +dotnet build src/ProjectName/ProjectName.csproj + +# Run tests +dotnet test test/ProjectName.Tests/ProjectName.Tests.csproj + +# Build samples (with environment variable) +env SENTRY_DSN=placeholder dotnet build samples/SampleProject/SampleProject.csproj +``` + +### Target Framework Testing +- Always test on both target frameworks (net8.0, net9.0) +- CI builds will validate against all supported frameworks + +## Common Pitfalls to Avoid + +1. **Don't exclude shared sample files** - They provide proper DSN handling +3. **Don't require manual hub passing** - Use automatic detection +4. **Don't use `SpanStatus.InternalError`** - Pass exception reference +5. **Don't forget `[EnumeratorCancellation]`** - For async enumerable parameters +6. **Don't use `yield return` in try-catch** - Create wrapper classes instead + +## File Organization + +### Extension Structure +``` +src/Sentry.Extensions.Technology/ +├── Sentry.Extensions.Technology.csproj +├── Extensions/ +│ └── TechnologyExtensions.cs +└── Internal/ + ├── SentryWrapper.cs + └── SentryEnumerable.cs (if needed) +``` + +### Test Structure +``` +test/Sentry.Extensions.Technology.Tests/ +├── Sentry.Extensions.Technology.Tests.csproj +└── WrapperTests.cs +``` + +This document should be updated as new patterns emerge and conventions evolve. \ No newline at end of file diff --git a/Directory.Build.props b/Directory.Build.props index 4e0c3a33cf..e031507117 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,6 +1,7 @@ + true 5.14.0 13 true @@ -71,8 +72,8 @@ - - + + diff --git a/Directory.Packages.props b/Directory.Packages.props new file mode 100644 index 0000000000..3bbcf5ffab --- /dev/null +++ b/Directory.Packages.props @@ -0,0 +1,248 @@ + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/benchmarks/Sentry.Benchmarks/Sentry.Benchmarks.csproj b/benchmarks/Sentry.Benchmarks/Sentry.Benchmarks.csproj index 48231469f2..40b5a6afea 100644 --- a/benchmarks/Sentry.Benchmarks/Sentry.Benchmarks.csproj +++ b/benchmarks/Sentry.Benchmarks/Sentry.Benchmarks.csproj @@ -7,9 +7,9 @@ - - - + + + diff --git a/samples/Sentry.Samples.AspNetCore.Blazor.Wasm/Sentry.Samples.AspNetCore.Blazor.Wasm.csproj b/samples/Sentry.Samples.AspNetCore.Blazor.Wasm/Sentry.Samples.AspNetCore.Blazor.Wasm.csproj index c64bb41a0a..024e4564da 100644 --- a/samples/Sentry.Samples.AspNetCore.Blazor.Wasm/Sentry.Samples.AspNetCore.Blazor.Wasm.csproj +++ b/samples/Sentry.Samples.AspNetCore.Blazor.Wasm/Sentry.Samples.AspNetCore.Blazor.Wasm.csproj @@ -15,13 +15,13 @@ - - + + - + diff --git a/samples/Sentry.Samples.AspNetCore.Grpc/Sentry.Samples.AspNetCore.Grpc.csproj b/samples/Sentry.Samples.AspNetCore.Grpc/Sentry.Samples.AspNetCore.Grpc.csproj index 89dc8c6a3e..b1b3db60b4 100644 --- a/samples/Sentry.Samples.AspNetCore.Grpc/Sentry.Samples.AspNetCore.Grpc.csproj +++ b/samples/Sentry.Samples.AspNetCore.Grpc/Sentry.Samples.AspNetCore.Grpc.csproj @@ -5,10 +5,10 @@ - - - - + + + + diff --git a/samples/Sentry.Samples.AspNetCore.Serilog/Sentry.Samples.AspNetCore.Serilog.csproj b/samples/Sentry.Samples.AspNetCore.Serilog/Sentry.Samples.AspNetCore.Serilog.csproj index a56d6004e2..038b1d36e0 100644 --- a/samples/Sentry.Samples.AspNetCore.Serilog/Sentry.Samples.AspNetCore.Serilog.csproj +++ b/samples/Sentry.Samples.AspNetCore.Serilog/Sentry.Samples.AspNetCore.Serilog.csproj @@ -5,9 +5,9 @@ - - - + + + diff --git a/samples/Sentry.Samples.AspNetCore.WebAPI.Profiling/Sentry.Samples.AspNetCore.WebAPI.Profiling.csproj b/samples/Sentry.Samples.AspNetCore.WebAPI.Profiling/Sentry.Samples.AspNetCore.WebAPI.Profiling.csproj index 6ca934c5fc..963676658d 100644 --- a/samples/Sentry.Samples.AspNetCore.WebAPI.Profiling/Sentry.Samples.AspNetCore.WebAPI.Profiling.csproj +++ b/samples/Sentry.Samples.AspNetCore.WebAPI.Profiling/Sentry.Samples.AspNetCore.WebAPI.Profiling.csproj @@ -7,8 +7,8 @@ - - + + diff --git a/samples/Sentry.Samples.Aws.Lambda.AspNetCoreServer/Sentry.Samples.Aws.Lambda.AspNetCoreServer.csproj b/samples/Sentry.Samples.Aws.Lambda.AspNetCoreServer/Sentry.Samples.Aws.Lambda.AspNetCoreServer.csproj index 8d2dd8b221..4d1c5e9e53 100644 --- a/samples/Sentry.Samples.Aws.Lambda.AspNetCoreServer/Sentry.Samples.Aws.Lambda.AspNetCoreServer.csproj +++ b/samples/Sentry.Samples.Aws.Lambda.AspNetCoreServer/Sentry.Samples.Aws.Lambda.AspNetCoreServer.csproj @@ -6,8 +6,8 @@ - - + + diff --git a/samples/Sentry.Samples.Azure.Functions.Worker/Sentry.Samples.Azure.Functions.Worker.csproj b/samples/Sentry.Samples.Azure.Functions.Worker/Sentry.Samples.Azure.Functions.Worker.csproj index 3145f92db6..9228257297 100644 --- a/samples/Sentry.Samples.Azure.Functions.Worker/Sentry.Samples.Azure.Functions.Worker.csproj +++ b/samples/Sentry.Samples.Azure.Functions.Worker/Sentry.Samples.Azure.Functions.Worker.csproj @@ -6,10 +6,10 @@ - - - - + + + + diff --git a/samples/Sentry.Samples.Console.Basic/Sentry.Samples.Console.Basic.csproj b/samples/Sentry.Samples.Console.Basic/Sentry.Samples.Console.Basic.csproj index bf9efb93d8..966b8b8ff2 100644 --- a/samples/Sentry.Samples.Console.Basic/Sentry.Samples.Console.Basic.csproj +++ b/samples/Sentry.Samples.Console.Basic/Sentry.Samples.Console.Basic.csproj @@ -57,7 +57,7 @@ - + diff --git a/samples/Sentry.Samples.EntityFramework/Sentry.Samples.EntityFramework.csproj b/samples/Sentry.Samples.EntityFramework/Sentry.Samples.EntityFramework.csproj index 2e27079e5d..2f55ba7e33 100644 --- a/samples/Sentry.Samples.EntityFramework/Sentry.Samples.EntityFramework.csproj +++ b/samples/Sentry.Samples.EntityFramework/Sentry.Samples.EntityFramework.csproj @@ -15,11 +15,11 @@ - - + + - + diff --git a/samples/Sentry.Samples.GenericHost/Sentry.Samples.GenericHost.csproj b/samples/Sentry.Samples.GenericHost/Sentry.Samples.GenericHost.csproj index 78283ed704..502fe51586 100644 --- a/samples/Sentry.Samples.GenericHost/Sentry.Samples.GenericHost.csproj +++ b/samples/Sentry.Samples.GenericHost/Sentry.Samples.GenericHost.csproj @@ -20,8 +20,8 @@ - + - + diff --git a/samples/Sentry.Samples.Google.Cloud.Functions/Sentry.Samples.Google.Cloud.Functions.csproj b/samples/Sentry.Samples.Google.Cloud.Functions/Sentry.Samples.Google.Cloud.Functions.csproj index c212fcf871..6cd19a87a1 100644 --- a/samples/Sentry.Samples.Google.Cloud.Functions/Sentry.Samples.Google.Cloud.Functions.csproj +++ b/samples/Sentry.Samples.Google.Cloud.Functions/Sentry.Samples.Google.Cloud.Functions.csproj @@ -6,7 +6,7 @@ - + diff --git a/samples/Sentry.Samples.GraphQL.Client.Http/Sentry.Samples.GraphQL.Client.Http.csproj b/samples/Sentry.Samples.GraphQL.Client.Http/Sentry.Samples.GraphQL.Client.Http.csproj index 183f1fef77..f4039657fb 100644 --- a/samples/Sentry.Samples.GraphQL.Client.Http/Sentry.Samples.GraphQL.Client.Http.csproj +++ b/samples/Sentry.Samples.GraphQL.Client.Http/Sentry.Samples.GraphQL.Client.Http.csproj @@ -8,9 +8,9 @@ - - - + + + diff --git a/samples/Sentry.Samples.GraphQL.Server/Sentry.Samples.GraphQL.Server.csproj b/samples/Sentry.Samples.GraphQL.Server/Sentry.Samples.GraphQL.Server.csproj index 2078f97579..ff42891061 100644 --- a/samples/Sentry.Samples.GraphQL.Server/Sentry.Samples.GraphQL.Server.csproj +++ b/samples/Sentry.Samples.GraphQL.Server/Sentry.Samples.GraphQL.Server.csproj @@ -7,17 +7,17 @@ - - - - - - - - - - - + + + + + + + + + + + diff --git a/samples/Sentry.Samples.Hangfire/Sentry.Samples.Hangfire.csproj b/samples/Sentry.Samples.Hangfire/Sentry.Samples.Hangfire.csproj index ac7347715a..ae4deabd5a 100644 --- a/samples/Sentry.Samples.Hangfire/Sentry.Samples.Hangfire.csproj +++ b/samples/Sentry.Samples.Hangfire/Sentry.Samples.Hangfire.csproj @@ -7,11 +7,11 @@ - - - + + + - + diff --git a/samples/Sentry.Samples.ME.Logging/Sentry.Samples.ME.Logging.csproj b/samples/Sentry.Samples.ME.Logging/Sentry.Samples.ME.Logging.csproj index 0d60cbe639..063265d603 100644 --- a/samples/Sentry.Samples.ME.Logging/Sentry.Samples.ME.Logging.csproj +++ b/samples/Sentry.Samples.ME.Logging/Sentry.Samples.ME.Logging.csproj @@ -6,7 +6,7 @@ - + diff --git a/samples/Sentry.Samples.Maui/Sentry.Samples.Maui.csproj b/samples/Sentry.Samples.Maui/Sentry.Samples.Maui.csproj index 9f87848b21..c1fd7938d3 100644 --- a/samples/Sentry.Samples.Maui/Sentry.Samples.Maui.csproj +++ b/samples/Sentry.Samples.Maui/Sentry.Samples.Maui.csproj @@ -110,9 +110,11 @@ - - - + + + + + diff --git a/samples/Sentry.Samples.NLog/Sentry.Samples.NLog.csproj b/samples/Sentry.Samples.NLog/Sentry.Samples.NLog.csproj index 9b7e809ed0..a7cc22237c 100644 --- a/samples/Sentry.Samples.NLog/Sentry.Samples.NLog.csproj +++ b/samples/Sentry.Samples.NLog/Sentry.Samples.NLog.csproj @@ -12,7 +12,7 @@ - + true diff --git a/samples/Sentry.Samples.OpenTelemetry.AspNetCore/Sentry.Samples.OpenTelemetry.AspNetCore.csproj b/samples/Sentry.Samples.OpenTelemetry.AspNetCore/Sentry.Samples.OpenTelemetry.AspNetCore.csproj index 7159dfcb7e..47257c529c 100644 --- a/samples/Sentry.Samples.OpenTelemetry.AspNetCore/Sentry.Samples.OpenTelemetry.AspNetCore.csproj +++ b/samples/Sentry.Samples.OpenTelemetry.AspNetCore/Sentry.Samples.OpenTelemetry.AspNetCore.csproj @@ -7,10 +7,10 @@ - - - - + + + + diff --git a/samples/Sentry.Samples.OpenTelemetry.Console/Sentry.Samples.OpenTelemetry.Console.csproj b/samples/Sentry.Samples.OpenTelemetry.Console/Sentry.Samples.OpenTelemetry.Console.csproj index 8b5c0e9654..76388d8aa7 100644 --- a/samples/Sentry.Samples.OpenTelemetry.Console/Sentry.Samples.OpenTelemetry.Console.csproj +++ b/samples/Sentry.Samples.OpenTelemetry.Console/Sentry.Samples.OpenTelemetry.Console.csproj @@ -8,8 +8,8 @@ - - + + diff --git a/samples/Sentry.Samples.Serilog/Sentry.Samples.Serilog.csproj b/samples/Sentry.Samples.Serilog/Sentry.Samples.Serilog.csproj index f9df0dc20f..2f5738cdb2 100644 --- a/samples/Sentry.Samples.Serilog/Sentry.Samples.Serilog.csproj +++ b/samples/Sentry.Samples.Serilog/Sentry.Samples.Serilog.csproj @@ -7,8 +7,8 @@ - - + + diff --git a/src/Directory.Build.props b/src/Directory.Build.props index a63860aea1..31ce6bd376 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -57,7 +57,7 @@ - + diff --git a/src/Sentry.Analyzers/Sentry.Analyzers.csproj b/src/Sentry.Analyzers/Sentry.Analyzers.csproj index 223a1434f8..9af08e9d0f 100644 --- a/src/Sentry.Analyzers/Sentry.Analyzers.csproj +++ b/src/Sentry.Analyzers/Sentry.Analyzers.csproj @@ -11,12 +11,12 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive - - + + - + diff --git a/src/Sentry.Android.AssemblyReader/Sentry.Android.AssemblyReader.csproj b/src/Sentry.Android.AssemblyReader/Sentry.Android.AssemblyReader.csproj index 2c6dcde33e..74c6798bd9 100644 --- a/src/Sentry.Android.AssemblyReader/Sentry.Android.AssemblyReader.csproj +++ b/src/Sentry.Android.AssemblyReader/Sentry.Android.AssemblyReader.csproj @@ -6,7 +6,7 @@ - + diff --git a/src/Sentry.AspNetCore.Blazor.WebAssembly/Sentry.AspNetCore.Blazor.WebAssembly.csproj b/src/Sentry.AspNetCore.Blazor.WebAssembly/Sentry.AspNetCore.Blazor.WebAssembly.csproj index 4ff5701fa0..92e0c4d2fa 100644 --- a/src/Sentry.AspNetCore.Blazor.WebAssembly/Sentry.AspNetCore.Blazor.WebAssembly.csproj +++ b/src/Sentry.AspNetCore.Blazor.WebAssembly/Sentry.AspNetCore.Blazor.WebAssembly.csproj @@ -11,10 +11,10 @@ - + - + diff --git a/src/Sentry.AspNetCore.Grpc/Sentry.AspNetCore.Grpc.csproj b/src/Sentry.AspNetCore.Grpc/Sentry.AspNetCore.Grpc.csproj index cafddf4b7e..65e59e2730 100644 --- a/src/Sentry.AspNetCore.Grpc/Sentry.AspNetCore.Grpc.csproj +++ b/src/Sentry.AspNetCore.Grpc/Sentry.AspNetCore.Grpc.csproj @@ -11,8 +11,8 @@ - - + + diff --git a/src/Sentry.AspNetCore/Sentry.AspNetCore.csproj b/src/Sentry.AspNetCore/Sentry.AspNetCore.csproj index d75cabef9f..2cf0c5e0ac 100644 --- a/src/Sentry.AspNetCore/Sentry.AspNetCore.csproj +++ b/src/Sentry.AspNetCore/Sentry.AspNetCore.csproj @@ -17,10 +17,10 @@ - + - + diff --git a/src/Sentry.Azure.Functions.Worker/Sentry.Azure.Functions.Worker.csproj b/src/Sentry.Azure.Functions.Worker/Sentry.Azure.Functions.Worker.csproj index 7d04ce1a0b..3dde66949a 100644 --- a/src/Sentry.Azure.Functions.Worker/Sentry.Azure.Functions.Worker.csproj +++ b/src/Sentry.Azure.Functions.Worker/Sentry.Azure.Functions.Worker.csproj @@ -16,8 +16,8 @@ - - + + diff --git a/src/Sentry.Bindings.Android/Sentry.Bindings.Android.csproj b/src/Sentry.Bindings.Android/Sentry.Bindings.Android.csproj index b8dbd70ea6..9e64829fe6 100644 --- a/src/Sentry.Bindings.Android/Sentry.Bindings.Android.csproj +++ b/src/Sentry.Bindings.Android/Sentry.Bindings.Android.csproj @@ -1,5 +1,8 @@ + + false + net8.0-android34.0;net9.0-android35.0 8.6.0 $(BaseIntermediateOutputPath)sdks\$(TargetFramework)\Sentry\Android\$(SentryAndroidSdkVersion)\ @@ -27,6 +30,10 @@ + + + + - - + + - + diff --git a/src/Sentry.DiagnosticSource/Sentry.DiagnosticSource.csproj b/src/Sentry.DiagnosticSource/Sentry.DiagnosticSource.csproj index 2bb043f837..779d26c79c 100644 --- a/src/Sentry.DiagnosticSource/Sentry.DiagnosticSource.csproj +++ b/src/Sentry.DiagnosticSource/Sentry.DiagnosticSource.csproj @@ -14,7 +14,7 @@ - + diff --git a/src/Sentry.EntityFramework/Sentry.EntityFramework.csproj b/src/Sentry.EntityFramework/Sentry.EntityFramework.csproj index bd9096007f..9b944bd11a 100644 --- a/src/Sentry.EntityFramework/Sentry.EntityFramework.csproj +++ b/src/Sentry.EntityFramework/Sentry.EntityFramework.csproj @@ -22,11 +22,11 @@ - + - + diff --git a/src/Sentry.Extensions.Logging/Sentry.Extensions.Logging.csproj b/src/Sentry.Extensions.Logging/Sentry.Extensions.Logging.csproj index 4d52cd091c..655b8bff61 100644 --- a/src/Sentry.Extensions.Logging/Sentry.Extensions.Logging.csproj +++ b/src/Sentry.Extensions.Logging/Sentry.Extensions.Logging.csproj @@ -16,20 +16,20 @@ - - + + - - - + + + - - - + + + diff --git a/src/Sentry.Google.Cloud.Functions/Sentry.Google.Cloud.Functions.csproj b/src/Sentry.Google.Cloud.Functions/Sentry.Google.Cloud.Functions.csproj index 6c455dc928..f41fac9b6a 100644 --- a/src/Sentry.Google.Cloud.Functions/Sentry.Google.Cloud.Functions.csproj +++ b/src/Sentry.Google.Cloud.Functions/Sentry.Google.Cloud.Functions.csproj @@ -13,14 +13,14 @@ - + - + - + diff --git a/src/Sentry.Hangfire/Sentry.Hangfire.csproj b/src/Sentry.Hangfire/Sentry.Hangfire.csproj index 941dd8c94d..a38e250d93 100644 --- a/src/Sentry.Hangfire/Sentry.Hangfire.csproj +++ b/src/Sentry.Hangfire/Sentry.Hangfire.csproj @@ -16,7 +16,7 @@ - + diff --git a/src/Sentry.Log4Net/Sentry.Log4Net.csproj b/src/Sentry.Log4Net/Sentry.Log4Net.csproj index aebe69096e..9b3b296b3a 100644 --- a/src/Sentry.Log4Net/Sentry.Log4Net.csproj +++ b/src/Sentry.Log4Net/Sentry.Log4Net.csproj @@ -12,7 +12,7 @@ - + diff --git a/src/Sentry.Maui.CommunityToolkit.Mvvm/Sentry.Maui.CommunityToolkit.Mvvm.csproj b/src/Sentry.Maui.CommunityToolkit.Mvvm/Sentry.Maui.CommunityToolkit.Mvvm.csproj index 4b24dc19ee..7ed5ee657b 100644 --- a/src/Sentry.Maui.CommunityToolkit.Mvvm/Sentry.Maui.CommunityToolkit.Mvvm.csproj +++ b/src/Sentry.Maui.CommunityToolkit.Mvvm/Sentry.Maui.CommunityToolkit.Mvvm.csproj @@ -14,7 +14,7 @@ - + diff --git a/src/Sentry.Maui/Sentry.Maui.csproj b/src/Sentry.Maui/Sentry.Maui.csproj index 38c14e4788..73a1d6369d 100644 --- a/src/Sentry.Maui/Sentry.Maui.csproj +++ b/src/Sentry.Maui/Sentry.Maui.csproj @@ -42,10 +42,17 @@ + + + + + + + diff --git a/src/Sentry.NLog/Sentry.NLog.csproj b/src/Sentry.NLog/Sentry.NLog.csproj index ba6ea63332..923be45a45 100644 --- a/src/Sentry.NLog/Sentry.NLog.csproj +++ b/src/Sentry.NLog/Sentry.NLog.csproj @@ -12,7 +12,7 @@ - + diff --git a/src/Sentry.OpenTelemetry/Sentry.OpenTelemetry.csproj b/src/Sentry.OpenTelemetry/Sentry.OpenTelemetry.csproj index 66daebfda3..9b846f5503 100644 --- a/src/Sentry.OpenTelemetry/Sentry.OpenTelemetry.csproj +++ b/src/Sentry.OpenTelemetry/Sentry.OpenTelemetry.csproj @@ -17,7 +17,7 @@ - + diff --git a/src/Sentry.Profiling/Sentry.Profiling.csproj b/src/Sentry.Profiling/Sentry.Profiling.csproj index c453876242..329fd72e31 100644 --- a/src/Sentry.Profiling/Sentry.Profiling.csproj +++ b/src/Sentry.Profiling/Sentry.Profiling.csproj @@ -14,7 +14,7 @@ - + diff --git a/src/Sentry.Serilog/Sentry.Serilog.csproj b/src/Sentry.Serilog/Sentry.Serilog.csproj index eca849fcd6..b0865a362d 100644 --- a/src/Sentry.Serilog/Sentry.Serilog.csproj +++ b/src/Sentry.Serilog/Sentry.Serilog.csproj @@ -28,11 +28,11 @@ - + - + diff --git a/src/Sentry.SourceGenerators/Sentry.SourceGenerators.csproj b/src/Sentry.SourceGenerators/Sentry.SourceGenerators.csproj index 047ca032ed..c1fcb30a36 100644 --- a/src/Sentry.SourceGenerators/Sentry.SourceGenerators.csproj +++ b/src/Sentry.SourceGenerators/Sentry.SourceGenerators.csproj @@ -11,11 +11,11 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/src/Sentry/Sentry.csproj b/src/Sentry/Sentry.csproj index 1ba7e0cc97..7f17ffce96 100644 --- a/src/Sentry/Sentry.csproj +++ b/src/Sentry/Sentry.csproj @@ -43,7 +43,7 @@ - + @@ -65,7 +65,7 @@ https://github.com/SimonCropp/Polyfill --> - + - + @@ -83,7 +83,7 @@ - + - - - - - - + + + + + + - + - - + + diff --git a/test/Sentry.Analyzers.Tests/Sentry.Analyzers.Tests.csproj b/test/Sentry.Analyzers.Tests/Sentry.Analyzers.Tests.csproj index 9750861210..5423dfe3ea 100644 --- a/test/Sentry.Analyzers.Tests/Sentry.Analyzers.Tests.csproj +++ b/test/Sentry.Analyzers.Tests/Sentry.Analyzers.Tests.csproj @@ -8,10 +8,10 @@ - - - - + + + + diff --git a/test/Sentry.AspNetCore.Grpc.Tests/Sentry.AspNetCore.Grpc.Tests.csproj b/test/Sentry.AspNetCore.Grpc.Tests/Sentry.AspNetCore.Grpc.Tests.csproj index 24227ac339..d085ae5380 100644 --- a/test/Sentry.AspNetCore.Grpc.Tests/Sentry.AspNetCore.Grpc.Tests.csproj +++ b/test/Sentry.AspNetCore.Grpc.Tests/Sentry.AspNetCore.Grpc.Tests.csproj @@ -5,9 +5,9 @@ - - - + + + diff --git a/test/Sentry.AspNetCore.TestUtils/Sentry.AspNetCore.TestUtils.csproj b/test/Sentry.AspNetCore.TestUtils/Sentry.AspNetCore.TestUtils.csproj index c60ea32096..d434473f04 100644 --- a/test/Sentry.AspNetCore.TestUtils/Sentry.AspNetCore.TestUtils.csproj +++ b/test/Sentry.AspNetCore.TestUtils/Sentry.AspNetCore.TestUtils.csproj @@ -30,31 +30,31 @@ See https://github.com/dotnet/aspnetcore/issues/15423 --> - - + + - - + + - + - + - - - - + + + + - - - - + + + + diff --git a/test/Sentry.DiagnosticSource.IntegrationTests/Sentry.DiagnosticSource.IntegrationTests.csproj b/test/Sentry.DiagnosticSource.IntegrationTests/Sentry.DiagnosticSource.IntegrationTests.csproj index 504be0b959..13a509e331 100644 --- a/test/Sentry.DiagnosticSource.IntegrationTests/Sentry.DiagnosticSource.IntegrationTests.csproj +++ b/test/Sentry.DiagnosticSource.IntegrationTests/Sentry.DiagnosticSource.IntegrationTests.csproj @@ -8,34 +8,34 @@ - - - + + + - - - + + + - - + + - + - + - + diff --git a/test/Sentry.DiagnosticSource.Tests/Sentry.DiagnosticSource.Tests.csproj b/test/Sentry.DiagnosticSource.Tests/Sentry.DiagnosticSource.Tests.csproj index cf4e670998..0e6d6d3f81 100644 --- a/test/Sentry.DiagnosticSource.Tests/Sentry.DiagnosticSource.Tests.csproj +++ b/test/Sentry.DiagnosticSource.Tests/Sentry.DiagnosticSource.Tests.csproj @@ -8,23 +8,23 @@ - - + + - - + + - + - - + + diff --git a/test/Sentry.EntityFramework.Tests/Sentry.EntityFramework.Tests.csproj b/test/Sentry.EntityFramework.Tests/Sentry.EntityFramework.Tests.csproj index d81324346b..221df1b448 100644 --- a/test/Sentry.EntityFramework.Tests/Sentry.EntityFramework.Tests.csproj +++ b/test/Sentry.EntityFramework.Tests/Sentry.EntityFramework.Tests.csproj @@ -7,9 +7,9 @@ - - - + + + diff --git a/test/Sentry.Extensions.Logging.Tests/Sentry.Extensions.Logging.Tests.csproj b/test/Sentry.Extensions.Logging.Tests/Sentry.Extensions.Logging.Tests.csproj index 27b9c73763..3aa7b9422b 100644 --- a/test/Sentry.Extensions.Logging.Tests/Sentry.Extensions.Logging.Tests.csproj +++ b/test/Sentry.Extensions.Logging.Tests/Sentry.Extensions.Logging.Tests.csproj @@ -10,13 +10,13 @@ - + - + diff --git a/test/Sentry.Hangfire.Tests/Sentry.Hangfire.Tests.csproj b/test/Sentry.Hangfire.Tests/Sentry.Hangfire.Tests.csproj index 15a9d7f0c8..1734316f12 100644 --- a/test/Sentry.Hangfire.Tests/Sentry.Hangfire.Tests.csproj +++ b/test/Sentry.Hangfire.Tests/Sentry.Hangfire.Tests.csproj @@ -13,7 +13,7 @@ - + diff --git a/test/Sentry.Log4Net.Tests/Sentry.Log4Net.Tests.csproj b/test/Sentry.Log4Net.Tests/Sentry.Log4Net.Tests.csproj index 9939555343..38806fb5fb 100644 --- a/test/Sentry.Log4Net.Tests/Sentry.Log4Net.Tests.csproj +++ b/test/Sentry.Log4Net.Tests/Sentry.Log4Net.Tests.csproj @@ -8,7 +8,7 @@ - + diff --git a/test/Sentry.Maui.CommunityToolkit.Mvvm.Tests/Sentry.Maui.CommunityToolkit.Mvvm.Tests.csproj b/test/Sentry.Maui.CommunityToolkit.Mvvm.Tests/Sentry.Maui.CommunityToolkit.Mvvm.Tests.csproj index ff936b6764..e1380cf587 100644 --- a/test/Sentry.Maui.CommunityToolkit.Mvvm.Tests/Sentry.Maui.CommunityToolkit.Mvvm.Tests.csproj +++ b/test/Sentry.Maui.CommunityToolkit.Mvvm.Tests/Sentry.Maui.CommunityToolkit.Mvvm.Tests.csproj @@ -19,7 +19,7 @@ - + diff --git a/test/Sentry.Maui.Device.TestApp/Sentry.Maui.Device.TestApp.csproj b/test/Sentry.Maui.Device.TestApp/Sentry.Maui.Device.TestApp.csproj index 15beeb7e92..2de697072d 100644 --- a/test/Sentry.Maui.Device.TestApp/Sentry.Maui.Device.TestApp.csproj +++ b/test/Sentry.Maui.Device.TestApp/Sentry.Maui.Device.TestApp.csproj @@ -70,12 +70,12 @@ - - - + + + - + @@ -85,13 +85,13 @@ - - + + - - + + diff --git a/test/Sentry.Maui.Tests/Sentry.Maui.Tests.csproj b/test/Sentry.Maui.Tests/Sentry.Maui.Tests.csproj index ba3c3fbd09..da9d13d7f4 100644 --- a/test/Sentry.Maui.Tests/Sentry.Maui.Tests.csproj +++ b/test/Sentry.Maui.Tests/Sentry.Maui.Tests.csproj @@ -18,7 +18,7 @@ - + diff --git a/test/Sentry.MauiTrimTest/Sentry.MauiTrimTest.csproj b/test/Sentry.MauiTrimTest/Sentry.MauiTrimTest.csproj index 510b462757..9d9eaea598 100644 --- a/test/Sentry.MauiTrimTest/Sentry.MauiTrimTest.csproj +++ b/test/Sentry.MauiTrimTest/Sentry.MauiTrimTest.csproj @@ -60,8 +60,8 @@ - - + + diff --git a/test/Sentry.NLog.Tests/Sentry.NLog.Tests.csproj b/test/Sentry.NLog.Tests/Sentry.NLog.Tests.csproj index bc003e6461..81dee00560 100644 --- a/test/Sentry.NLog.Tests/Sentry.NLog.Tests.csproj +++ b/test/Sentry.NLog.Tests/Sentry.NLog.Tests.csproj @@ -7,7 +7,7 @@ - + diff --git a/test/Sentry.OpenTelemetry.Tests/Sentry.OpenTelemetry.Tests.csproj b/test/Sentry.OpenTelemetry.Tests/Sentry.OpenTelemetry.Tests.csproj index c5d402cc2e..9b19adceeb 100644 --- a/test/Sentry.OpenTelemetry.Tests/Sentry.OpenTelemetry.Tests.csproj +++ b/test/Sentry.OpenTelemetry.Tests/Sentry.OpenTelemetry.Tests.csproj @@ -7,8 +7,8 @@ - - + + diff --git a/test/Sentry.Serilog.Tests/Sentry.Serilog.Tests.csproj b/test/Sentry.Serilog.Tests/Sentry.Serilog.Tests.csproj index 5bf555ed06..91732deb56 100644 --- a/test/Sentry.Serilog.Tests/Sentry.Serilog.Tests.csproj +++ b/test/Sentry.Serilog.Tests/Sentry.Serilog.Tests.csproj @@ -7,8 +7,8 @@ - - + + diff --git a/test/Sentry.SourceGenerators.Tests/Sentry.SourceGenerators.Tests.csproj b/test/Sentry.SourceGenerators.Tests/Sentry.SourceGenerators.Tests.csproj index 820c77dd05..756726c781 100644 --- a/test/Sentry.SourceGenerators.Tests/Sentry.SourceGenerators.Tests.csproj +++ b/test/Sentry.SourceGenerators.Tests/Sentry.SourceGenerators.Tests.csproj @@ -8,9 +8,9 @@ - - - + + + diff --git a/test/Sentry.Testing/Sentry.Testing.csproj b/test/Sentry.Testing/Sentry.Testing.csproj index 8fbe7f01f1..642d25f7f1 100644 --- a/test/Sentry.Testing/Sentry.Testing.csproj +++ b/test/Sentry.Testing/Sentry.Testing.csproj @@ -23,7 +23,7 @@ - + diff --git a/test/Sentry.Tests/Sentry.Tests.csproj b/test/Sentry.Tests/Sentry.Tests.csproj index 3f00bc5a9f..6250840b7c 100644 --- a/test/Sentry.Tests/Sentry.Tests.csproj +++ b/test/Sentry.Tests/Sentry.Tests.csproj @@ -42,6 +42,6 @@ - +