Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/actions/environment/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ runs:
with:
dotnet-version: |
8.0.x
9.0.203
9.0.300

- name: Install .NET Workloads
shell: bash
Expand Down
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@

### Dependencies

- Bump the version of the .NET SDK that we use from 9.0.203 to 9.0.300 ([#4259](https://github.com/getsentry/sentry-dotnet/pull/4259))
- Note that this also required we bump various Java dependencies (since version 9.0.300 of the Android workload requires newer versions of the these)
- See https://docs.sentry.io/platforms/dotnet/troubleshooting/#detected-package-version-outside-of-dependency-constraint if you see NU1605, NU1608 and/or NU1107 warnings after upgrading
- Bump Native SDK from v0.8.5 to v0.9.0 ([#4260](https://github.com/getsentry/sentry-dotnet/pull/4260))
- [changelog](https://github.com/getsentry/sentry-native/blob/master/CHANGELOG.md#090)
- [diff](https://github.com/getsentry/sentry-native/compare/0.8.5...0.9.0)
Expand Down
1 change: 0 additions & 1 deletion Sentry-CI-Build-Linux-arm64.slnf
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@
"src\\Sentry.SourceGenerators\\Sentry.SourceGenerators.csproj",
"src\\Sentry\\Sentry.csproj",
"test\\Sentry.Analyzers.Tests\\Sentry.Analyzers.Tests.csproj",
"test\\Sentry.AspNet.Tests\\Sentry.AspNet.Tests.csproj",
"test\\Sentry.AspNetCore.Grpc.Tests\\Sentry.AspNetCore.Grpc.Tests.csproj",
"test\\Sentry.AspNetCore.Tests\\Sentry.AspNetCore.Tests.csproj",
"test\\Sentry.AspNetCore.TestUtils\\Sentry.AspNetCore.TestUtils.csproj",
Expand Down
1 change: 0 additions & 1 deletion Sentry-CI-Build-Linux-musl.slnf
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@
"src\\Sentry.SourceGenerators\\Sentry.SourceGenerators.csproj",
"src\\Sentry\\Sentry.csproj",
"test\\Sentry.Analyzers.Tests\\Sentry.Analyzers.Tests.csproj",
"test\\Sentry.AspNet.Tests\\Sentry.AspNet.Tests.csproj",
"test\\Sentry.AspNetCore.Grpc.Tests\\Sentry.AspNetCore.Grpc.Tests.csproj",
"test\\Sentry.AspNetCore.Tests\\Sentry.AspNetCore.Tests.csproj",
"test\\Sentry.AspNetCore.TestUtils\\Sentry.AspNetCore.TestUtils.csproj",
Expand Down
1 change: 0 additions & 1 deletion Sentry-CI-Build-Linux.slnf
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,6 @@
"src\\Sentry\\Sentry.csproj",
"test\\Sentry.Analyzers.Tests\\Sentry.Analyzers.Tests.csproj",
"test\\Sentry.Android.AssemblyReader.Tests\\Sentry.Android.AssemblyReader.Tests.csproj",
"test\\Sentry.AspNet.Tests\\Sentry.AspNet.Tests.csproj",
"test\\Sentry.AspNetCore.Grpc.Tests\\Sentry.AspNetCore.Grpc.Tests.csproj",
"test\\Sentry.AspNetCore.Tests\\Sentry.AspNetCore.Tests.csproj",
"test\\Sentry.AspNetCore.TestUtils\\Sentry.AspNetCore.TestUtils.csproj",
Expand Down
1 change: 0 additions & 1 deletion Sentry-CI-Build-macOS.slnf
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,6 @@
"src\\Sentry\\Sentry.csproj",
"test\\Sentry.Analyzers.Tests\\Sentry.Analyzers.Tests.csproj",
"test\\Sentry.Android.AssemblyReader.Tests\\Sentry.Android.AssemblyReader.Tests.csproj",
"test\\Sentry.AspNet.Tests\\Sentry.AspNet.Tests.csproj",
"test\\Sentry.AspNetCore.Grpc.Tests\\Sentry.AspNetCore.Grpc.Tests.csproj",
"test\\Sentry.AspNetCore.Tests\\Sentry.AspNetCore.Tests.csproj",
"test\\Sentry.AspNetCore.TestUtils\\Sentry.AspNetCore.TestUtils.csproj",
Expand Down
4 changes: 2 additions & 2 deletions global.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"sdk": {
"version": "9.0.203",
"workloadVersion": "9.0.203",
"version": "9.0.300",
Copy link
Member

@Flash0ver Flash0ver Jun 10, 2025

Choose a reason for hiding this comment

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

questions

  • Will we run into the same issue again once the next patch version of feature band 3 is released?
  • If so, is this an indicator that we should we keep bumping to the latest .NET SDK in the future?
    • Would this be automatable?
      • Perhaps partially (global.json, .github/**/*.yml and CHANGELOG.md)
      • Xamarin.AndroidX.* may be not as straightforward

Copy link
Collaborator

@jamescrosswell jamescrosswell Jun 10, 2025

Choose a reason for hiding this comment

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

Will we run into the same issue again once the next patch version of feature band 3 is released?

We frequently run into issues when new versions of .NET are released. They are, thus far, each unique... some easier than others to fix. This is why we pin the version of .NET and the workloads in the repo (it means we can still make PRs and do other work while we're trying to work out how to upgrade to the latest set of "surprises").

Would this be automatable?

We definitely don't want to turn on roll forward (automatic updates) in the global.json file. Before we were pinning the workload/sdk version in global.json, I was spending 1-2 days per week, consistently, fluffing around with this stuff.

Potentially we could try to automatically create a PR that bumps to the latest version of .NET, like we do with other dependencies. That would give us a way to upgrade regularly but without breaking the main branch and halting all other work. It could be a massive time sink though. It's hard to say whether we're better off making smaller bumps once every 6-8 weeks or having long periods of focus (where we're working on the SDK instead) and then taking all the pain in one hit occasionally (like now).

I'm inclined to stick to what we're doing for the time being - there's just so much other stuff on the backlog without adding what seems to be very meta work around automating something like this.

"workloadVersion": "9.0.300",
"rollForward": "disable",
"allowPrerelease": false
}
Expand Down
2 changes: 2 additions & 0 deletions scripts/generate-solution-filters-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ groupConfigs:
windowsOnly:
# .NET Framework projects
- "**/*.AspNet.csproj"
- "**/*.AspNet.Tests.csproj"
artefacts:
# Any projects in the obj or bin directories
- "**/obj/**/*.csproj"
Expand Down Expand Up @@ -93,6 +94,7 @@ filterConfigs:
patterns:
- "**/*AndroidTestApp.csproj"
- "**/*DeviceTests*.csproj"
- "**/*.AspNet.Tests.csproj"

- outputPath: Sentry-CI-Build-Windows.slnf
include:
Expand Down
11 changes: 5 additions & 6 deletions src/Sentry.Bindings.Android/Sentry.Bindings.Android.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,13 @@
</ItemGroup>

<!-- Dependencies for AndroidMavenLibrary references
Note: versions match what was shipped with net9.0-android35.0 in:
https://www.nuget.org/packages/Microsoft.Maui.Core/9.0.0#dependencies-body-tab
Matching what was shipped in the 9.0.300 workloads to avoid NU1608 warnings
-->
<ItemGroup Condition="$(TargetFramework.StartsWith('net9'))">
<PackageReference Include="Xamarin.AndroidX.Lifecycle.Process" Version="2.8.5.1" />
<PackageReference Include="Xamarin.AndroidX.Lifecycle.Common.Java8" Version="2.8.5.1" />
<!-- MAUI 9 references this version indirectly via Xamarin.AndroidX.SwipeRefreshLayout (>= 1.1.0.24) -->
<PackageReference Include="Xamarin.AndroidX.Core" Version="1.13.1.5" />
<PackageReference Include="Xamarin.AndroidX.Lifecycle.Process" Version="2.8.7.2" />
<PackageReference Include="Xamarin.AndroidX.Lifecycle.Common.Java8" Version="2.8.7.2" />
<!-- MAUI 9 references this version indirectly via Xamarin.AndroidX.SwipeRefreshLayout -->
<PackageReference Include="Xamarin.AndroidX.Core" Version="1.15.0.2" />
<!-- We need 1.9.24 but there's no NuGet package for that version... the lowest version we can use is 2.0.0 -->
<PackageReference Include="Xamarin.Kotlin.StdLib.Jdk8" Version="2.0.0" />
</ItemGroup>
Expand Down
10 changes: 5 additions & 5 deletions test/Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -51,18 +51,18 @@

<PackageReference Include="NSubstitute" Version="5.3.0" />
<PackageReference Include="FluentAssertions" Version="6.12.0" />
<PackageReference Include="xunit" Version="2.9.2" />
<PackageReference Include="Xunit.SkippableFact" Version="1.4.13" />
<PackageReference Include="xunit" Version="2.9.3" />
<PackageReference Include="Xunit.SkippableFact" Version="1.5.23" />
<PackageReference Include="GitHubActionsTestLogger" Version="2.3.3" />
<PackageReference Include="TestableIO.System.IO.Abstractions.TestingHelpers" Version="20.0.4" />
</ItemGroup>

<!-- only non-platform-specific projects should include these packages -->
<ItemGroup Condition="'$(TargetPlatformIdentifier)'==''">
<PackageReference Include="Verify.Xunit" Version="28.5.0" />
<PackageReference Include="Verify.DiffPlex" Version="2.3.0" />
<PackageReference Include="Verify.Xunit" Version="30.3.1" />
<PackageReference Include="Verify.DiffPlex" Version="3.1.2" />
<PackageReference Include="PublicApiGenerator" Version="11.1.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5" PrivateAssets="All" />
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.1" PrivateAssets="All" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
<PackageReference Include="coverlet.collector" Version="6.0.0" />
</ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>net9.0;net8.0;net48</TargetFrameworks>
<TargetFrameworks>net9.0;net8.0</TargetFrameworks>
<!-- These tests fail on Mono -->
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('Windows'))">$(TargetFrameworks);net48</TargetFrameworks>
<IsTestProject>false</IsTestProject>
</PropertyGroup>

Expand Down Expand Up @@ -51,8 +53,8 @@
<ItemGroup Condition="$(TargetFramework) == 'net9.0'">
<PackageReference Include="Microsoft.AspNetCore.Mvc.Versioning" Version="5.1.0" />
<PackageReference Include="Microsoft.AspNetCore.TestHost" Version="9.0.0" />
<PackageReference Include="Verify.AspNetCore" Version="4.0.0" />
<PackageReference Include="Verify.Http" Version="6.4.1" />
<PackageReference Include="Verify.AspNetCore" Version="4.2.0" />
<PackageReference Include="Verify.Http" Version="6.5.0" />
</ItemGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>net8.0;net48</TargetFrameworks>
<TargetFrameworks>net8.0</TargetFrameworks>
<!-- These tests fail on Mono -->
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('Windows'))">$(TargetFrameworks);net48</TargetFrameworks>
</PropertyGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>net9.0;net8.0;net48</TargetFrameworks>
<TargetFrameworks>net9.0;net8.0</TargetFrameworks>
<!-- These tests fail on Mono -->
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('Windows'))">$(TargetFrameworks);net48</TargetFrameworks>
</PropertyGroup>

<!-- Test EF Core 9 on .NET 9 -->
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>net9.0;net8.0;net48</TargetFrameworks>
<TargetFrameworks>net9.0;net8.0</TargetFrameworks>
<!-- These tests fail on Mono -->
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('Windows'))">$(TargetFrameworks);net48</TargetFrameworks>
</PropertyGroup>

<!-- Test EF Core 9 on .NET 9 -->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,8 @@

<PropertyGroup>
<TargetFrameworks>net9.0;net8.0</TargetFrameworks>
</PropertyGroup>

<!-- Running these tests on Mono fail -->
<PropertyGroup Condition="$([MSBuild]::IsOSPlatform('windows'))">
<TargetFrameworks>$(TargetFrameworks);net48</TargetFrameworks>
<!-- These tests fail on Mono -->
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('Windows'))">$(TargetFrameworks);net48</TargetFrameworks>
</PropertyGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>net9.0;net8.0;net48</TargetFrameworks>
<TargetFrameworks>net9.0;net8.0</TargetFrameworks>
<TargetFrameworks Condition="'$(NO_ANDROID)' == ''">$(TargetFrameworks);net8.0-android34.0;net9.0-android35.0</TargetFrameworks>
<TargetFrameworks Condition="'$(NO_IOS)' == '' And $([MSBuild]::IsOSPlatform('OSX'))">$(TargetFrameworks);net8.0-ios17.0;net9.0-ios18.0</TargetFrameworks>
<TargetFrameworks Condition="'$(NO_MACCATALYST)' == '' And $([MSBuild]::IsOSPlatform('OSX'))">$(TargetFrameworks);net8.0-maccatalyst17.0;net9.0-maccatalyst18.0</TargetFrameworks>
<!-- These tests fail on Mono -->
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('Windows'))">$(TargetFrameworks);net48</TargetFrameworks>
</PropertyGroup>

<ItemGroup>
Expand Down
4 changes: 3 additions & 1 deletion test/Sentry.Log4Net.Tests/Sentry.Log4Net.Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

<PropertyGroup>
<!-- We use net8.0 to test netstandard2.0 -->
<TargetFrameworks>net8.0;net48</TargetFrameworks>
<TargetFrameworks>net8.0</TargetFrameworks>
<!-- These tests fail on Mono -->
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('Windows'))">$(TargetFrameworks);net48</TargetFrameworks>
</PropertyGroup>

<ItemGroup>
Expand Down
15 changes: 13 additions & 2 deletions test/Sentry.Maui.Tests/Mocks/MockApplication.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
#if __IOS__
using Foundation;
#endif
using Microsoft.Maui.Controls.Internals;

namespace Sentry.Maui.Tests.Mocks;
Expand Down Expand Up @@ -39,11 +42,19 @@ protected override Window CreateWindow(IActivationState activationState)
public static MockApplication Create()
{
// The base constructor will try to set the mock as the current application, which we don't want in tests.

lock (LockObj)
{
var previous = Current;
var application = new MockApplication();
MockApplication application = null;
#if __IOS__
// Ensure the constructor is called on the main thread
if (!NSThread.IsMain)
{
NSRunLoop.Main.InvokeOnMainThread(() => application = new MockApplication());
}
#else
application = new MockApplication();
#endif
Current = previous;
return application;
}
Expand Down
4 changes: 3 additions & 1 deletion test/Sentry.NLog.Tests/Sentry.NLog.Tests.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>net9.0;net8.0;net48</TargetFrameworks>
<TargetFrameworks>net9.0;net8.0</TargetFrameworks>
<!-- These tests fail on Mono -->
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('Windows'))">$(TargetFrameworks);net48</TargetFrameworks>
</PropertyGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>net9.0;net8.0;net48</TargetFrameworks>
<TargetFrameworks>net9.0;net8.0</TargetFrameworks>
<!-- These tests fail on Mono -->
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('Windows'))">$(TargetFrameworks);net48</TargetFrameworks>
</PropertyGroup>

<ItemGroup>
Expand Down
4 changes: 3 additions & 1 deletion test/Sentry.Serilog.Tests/Sentry.Serilog.Tests.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>net9.0;net8.0;net48</TargetFrameworks>
<TargetFrameworks>net9.0;net8.0</TargetFrameworks>
<!-- These tests fail on Mono -->
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('Windows'))">$(TargetFrameworks);net48</TargetFrameworks>
</PropertyGroup>

<ItemGroup>
Expand Down
4 changes: 3 additions & 1 deletion test/Sentry.Tests/Sentry.Tests.csproj
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>net9.0;net8.0;net48</TargetFrameworks>
<TargetFrameworks>net9.0;net8.0</TargetFrameworks>
<TargetFrameworks Condition="'$(NO_ANDROID)' == ''">$(TargetFrameworks);net8.0-android34.0;net9.0-android35.0</TargetFrameworks>
<TargetFrameworks Condition="'$(NO_IOS)' == '' And $([MSBuild]::IsOSPlatform('OSX'))">$(TargetFrameworks);net8.0-ios17.0;net9.0-ios18.0</TargetFrameworks>
<TargetFrameworks Condition="'$(NO_MACCATALYST)' == '' And $([MSBuild]::IsOSPlatform('OSX'))">$(TargetFrameworks);net8.0-maccatalyst17.0;net9.0-maccatalyst18.0</TargetFrameworks>
<!-- These tests fail on Mono -->
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('Windows'))">$(TargetFrameworks);net48</TargetFrameworks>
</PropertyGroup>

<ItemGroup>
Expand Down
Loading