roubachof / Sharpnado.Tabs

Pure MAUI and Xamarin.Forms Tabs, including fixed tabs, scrollable tabs, bottom tabs, badge, segmented control, custom tabs, button tabs, bendable tabs...
MIT License
479 stars 62 forks source link

Fix crash in .NET 9 #118

Open daltzctr opened 3 weeks ago

daltzctr commented 3 weeks ago

Fixes #116

roubachof commented 3 weeks ago

In the referenced issue, you stated:

This is likely due to the use of reflection based bindings in Sharpnado. This is no longer allowed in .NET 9 and all bindings must be compiled (or explicitly opted out with x:DataType={x:Null}.

But I don't see any change to compiled bindings in this PR. Moreover this PR is changing target type and swap Frame for Border, so it doesn't relate to its name (fix crash in .net9)

daltzctr commented 3 weeks ago

@roubachof my apologies. I have been fixing issues in various libraries during my migration to .NET 9. As you say, the issue in Sharpnado was not reflection bindings, but actually just references to obsoleted code (Device and Frame), which result in a runtime crash.

You will notice b530513 also always utilizes a gesture instead of the effects that were previously in-place. There was an issue in my testing where the gestures would no longer trigger in .NET 8, but I can't find the related change in MAUI. Using gestures on both iOS and Android was the solution.

This may break incompatibility with .NET older than 6, but I'm not sure that's quite necessary to support and I recommend following the MAUI support lifecycle (non-LTS is supported for year of release, LTS is supported 2-3 years). In which the current supported versions of MAUI are .NET 8 and .NET 9.

I have confirmed this does not break .NET 8 on Android or iOS.