Skip to content

Initial MAUI support #1663

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 33 commits into from
May 24, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
2e583a9
Add MAUI projects
mattjohnsonpint May 17, 2022
157710c
Add extension method, first unit test, and solution filter
mattjohnsonpint May 18, 2022
bd40fa2
Get initialization working, first test passes!
mattjohnsonpint May 18, 2022
bc63f47
Update tests and sample
mattjohnsonpint May 19, 2022
60417c9
Improve initialization
mattjohnsonpint May 19, 2022
b9803e3
Add an exception button to the sample app
mattjohnsonpint May 19, 2022
4635cce
Update CONTRIBUTING.md
mattjohnsonpint May 19, 2022
0169edb
Update CHANGELOG.md
mattjohnsonpint May 19, 2022
3a20e96
tabs->spaces, no-bom, eol
mattjohnsonpint May 19, 2022
af9bbee
Merge branch 'main' into maui
mattjohnsonpint May 20, 2022
0724b99
Update CHANGELOG.md
mattjohnsonpint May 20, 2022
552895f
Update build and solution filters
mattjohnsonpint May 20, 2022
57865e6
Update build.yml
mattjohnsonpint May 20, 2022
424235f
Update build.yml
mattjohnsonpint May 20, 2022
e0a48d7
Update MAUI sample build targets
mattjohnsonpint May 20, 2022
b3a50ba
Remove tizen from MAUI sample
mattjohnsonpint May 20, 2022
6d56715
Put windows versioned tfm back
mattjohnsonpint May 20, 2022
ead7937
Compile on macos-12 for Xcode 13.3 requirement
mattjohnsonpint May 20, 2022
6338150
Fix build error when packing a single project locally
mattjohnsonpint May 20, 2022
d1bc01b
Fix targets, and pack MAUI on macOS
mattjohnsonpint May 20, 2022
fd1e354
Target net6.0-windows in maui tests when running on Windows
mattjohnsonpint May 20, 2022
1ee6b74
Add supported platform versions
mattjohnsonpint May 20, 2022
7862995
Add more platform min versions
mattjohnsonpint May 20, 2022
c852a14
Update windows target versions
mattjohnsonpint May 22, 2022
478a19b
Fix build issues
mattjohnsonpint May 22, 2022
310355c
Update for MAUI GA
mattjohnsonpint May 23, 2022
be0b337
Pin MAUI projects to 6.0.300
mattjohnsonpint May 23, 2022
319356a
Merge branch 'main' into maui
mattjohnsonpint May 24, 2022
dbcc5b2
Update SentryMauiAppBuilderExtensions.cs
SimonCropp May 24, 2022
e4ada47
Merge branch 'maui' of https://github.com/getsentry/sentry-dotnet int…
SimonCropp May 24, 2022
4756421
Update sample app to match MAUI GA
mattjohnsonpint May 24, 2022
c8d7efb
Temporarily disable the native sentry-android build
mattjohnsonpint May 24, 2022
9ad3cb8
Disable auto-init to fix sample app
mattjohnsonpint May 24, 2022
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
49 changes: 30 additions & 19 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,14 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
# Using macos-12 because we need Xcode 13.3 or later to build Sentry.Samples.Maui. (macos-latest currently points at macos-11 which uses Xcode 13.2)
os: [ubuntu-latest, windows-latest, macos-12]
include:
- os: ubuntu-latest
slnf: SentryLinux.slnf
- os: windows-latest
slnf: SentryWindows.slnf
- os: macos-latest
- os: macos-12
slnf: SentryMac.slnf

steps:
Expand All @@ -36,11 +37,6 @@ jobs:
with:
submodules: recursive

- name: "Set up Java: 11"
uses: actions/setup-java@v1
with:
java-version: 11

- name: Setup .NET SDK (Windows)
if: startsWith(matrix.os, 'windows')
uses: actions/setup-dotnet@v2
Expand All @@ -59,22 +55,22 @@ jobs:
with:
dotnet-version: 2.1.818

# .NET Android workload doesn't support Linux https://github.com/dotnet/sdk/issues/22411
- name: Install Android workload (macOS)
if: startsWith(matrix.os, 'macos')
run: sudo dotnet workload install android

- name: Install Android workload (Windows)
if: startsWith(matrix.os, 'windows')
run: dotnet workload install android

- name: Dependency Caching
uses: actions/cache@v3
with:
path: ~/.nuget/packages
## we don't use a lockfile, so hash all files where we might be keeping <PackageReference> tags
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.*proj', '**/*.props') }}
restore-keys: ${{ runner.os }}-nuget
# We don't use a lockfile, so hash all files where we might be keeping <PackageReference> tags
# Workloads also get installed in the nuget packages cache, so if you modify workloads below, increment the number in the cache keys
key: ${{ runner.os }}-nuget+workloads2-${{ hashFiles('**/*.*proj', '**/*.props') }}
restore-keys: ${{ runner.os }}-nuget+workloads2

# .NET Android workloads don't support Linux https://github.com/dotnet/sdk/issues/22411
- name: Install .NET Workloads (Windows)
if: startsWith(matrix.os, 'windows')
run: dotnet workload install maui-android maui-windows
- name: Install .NET Workloads (macOS)
if: startsWith(matrix.os, 'macos')
run: dotnet workload install maui-android maui-ios maui-maccatalyst

- name: Build
run: dotnet build ${{ matrix.slnf }} -c Release /p:CopyLocalLockFileAssemblies=true
Expand All @@ -98,6 +94,11 @@ jobs:
if: startsWith(matrix.os, 'windows')
run: dotnet pack ${{ matrix.slnf }} -c Release --no-build

- name: Pack (MAUI)
# only pack on macos since we need ios native targets included
if: startsWith(matrix.os, 'macos')
run: dotnet pack src/Sentry.Maui -c Release --no-build

- name: Upload Verify Results
if: failure()
uses: actions/upload-artifact@v3
Expand All @@ -115,3 +116,13 @@ jobs:
if-no-files-found: error
path: |
${{ github.workspace }}/src/**/Release/*.nupkg

- name: Archive Artifacts (MAUI)
# only archive MAUI on macos since we only pack MAUI on macos. See Pack step.
if: startsWith(matrix.os, 'macos')
uses: actions/upload-artifact@v3
with:
name: ${{ github.sha }}
if-no-files-found: error
path: |
${{ github.workspace }}/src/Sentry.Maui/bin/Release/*.nupkg
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@

## Unreleased

### Features

- Initial support for .NET MAUI ([#1663](https://github.com/getsentry/sentry-dotnet/pull/1663))
- Initial support for `net6.0-android` apps ([#1288](https://github.com/getsentry/sentry-dotnet/pull/1288))

### Fixes

- Remove IInternalSdkIntegration ([#1656](https://github.com/getsentry/sentry-dotnet/pull/1656))
Expand Down
5 changes: 5 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,11 @@ For big feature it's advised to raise an issue to discuss it first.
- `Sentry.DiagnosticSource.IntegrationTests.csproj` uses [SQL LocalDb](https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/sql-server-express-localdb) - [download SQL LocalDB 2019](https://download.microsoft.com/download/7/c/1/7c14e92e-bdcb-4f89-b7cf-93543e7112d1/SqlLocalDB.msi). To avoid running these tests, unload `Sentry.DiagnosticSource.IntegrationTests.csproj` from the solution.
* On macOS/Linux: [Mono 6 or higher](https://www.mono-project.com/download/stable) to run the unit tests on the `net4x` targets.

## .NET MAUI Requirements

To build any of `Sentry.Maui`, `Sentry.Maui.Tests`, or `Sentry.Samples.Maui`, you'll need to have .NET SDK 6.0.300 or greater installed, and have installed the MAUI workload installed, either through Visual Studio setup, or through `dotnet workload install maui`.
You may also need other platform dependencies. See https://docs.microsoft.com/dotnet/maui/ for details. Basically, if you can build and run the "MyMauiApp" example you should also be able to build and run the Sentry MAUI sample app.

## API changes approval process

This repository uses [Verify](https://github.com/VerifyTests/Verify) to store the public API diffs in snapshot files.
Expand Down
21 changes: 21 additions & 0 deletions Sentry.sln
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,12 @@ EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Sentry.Samples.Android", "samples\Sentry.Samples.Android\Sentry.Samples.Android.csproj", "{5CB9167E-ED23-4A67-8D3A-B66B0C5196C8}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sentry.DiagnosticSource.IntegrationTests", "test\Sentry.DiagnosticSource.IntegrationTests\Sentry.DiagnosticSource.IntegrationTests.csproj", "{F8120B9C-D4CA-43DA-B5E1-1CFBA7C36E3B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sentry.Samples.Maui", "samples\Sentry.Samples.Maui\Sentry.Samples.Maui.csproj", "{EBCCABF9-F670-4C8D-AABC-4EB132961929}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sentry.Maui", "src\Sentry.Maui\Sentry.Maui.csproj", "{FFFC74C5-680B-43E3-9C42-A7A23B589CB6}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sentry.Maui.Tests", "test\Sentry.Maui.Tests\Sentry.Maui.Tests.csproj", "{143076C0-8D6B-4054-9F45-06B21655F417}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down Expand Up @@ -325,6 +331,18 @@ Global
{F8120B9C-D4CA-43DA-B5E1-1CFBA7C36E3B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F8120B9C-D4CA-43DA-B5E1-1CFBA7C36E3B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F8120B9C-D4CA-43DA-B5E1-1CFBA7C36E3B}.Release|Any CPU.Build.0 = Release|Any CPU
{EBCCABF9-F670-4C8D-AABC-4EB132961929}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EBCCABF9-F670-4C8D-AABC-4EB132961929}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EBCCABF9-F670-4C8D-AABC-4EB132961929}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EBCCABF9-F670-4C8D-AABC-4EB132961929}.Release|Any CPU.Build.0 = Release|Any CPU
{FFFC74C5-680B-43E3-9C42-A7A23B589CB6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FFFC74C5-680B-43E3-9C42-A7A23B589CB6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FFFC74C5-680B-43E3-9C42-A7A23B589CB6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FFFC74C5-680B-43E3-9C42-A7A23B589CB6}.Release|Any CPU.Build.0 = Release|Any CPU
{143076C0-8D6B-4054-9F45-06B21655F417}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{143076C0-8D6B-4054-9F45-06B21655F417}.Debug|Any CPU.Build.0 = Debug|Any CPU
{143076C0-8D6B-4054-9F45-06B21655F417}.Release|Any CPU.ActiveCfg = Release|Any CPU
{143076C0-8D6B-4054-9F45-06B21655F417}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down Expand Up @@ -377,6 +395,9 @@ Global
{D870B028-16ED-4551-8B0F-5529479D04C9} = {83263231-1A2A-4733-B759-EEFF14E8C5D5}
{5CB9167E-ED23-4A67-8D3A-B66B0C5196C8} = {77454495-55EE-4B40-A089-71B9E8F82E89}
{F8120B9C-D4CA-43DA-B5E1-1CFBA7C36E3B} = {83263231-1A2A-4733-B759-EEFF14E8C5D5}
{EBCCABF9-F670-4C8D-AABC-4EB132961929} = {77454495-55EE-4B40-A089-71B9E8F82E89}
{FFFC74C5-680B-43E3-9C42-A7A23B589CB6} = {AF6AF4C7-8AA2-4D59-8064-2D79560904EB}
{143076C0-8D6B-4054-9F45-06B21655F417} = {83263231-1A2A-4733-B759-EEFF14E8C5D5}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {0C652B1A-DF72-4EE5-A98B-194FE2C054F6}
Expand Down
2 changes: 1 addition & 1 deletion SentryCore.slnf
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,4 @@
"test\\Sentry.Tests\\Sentry.Tests.csproj"
]
}
}
}
2 changes: 1 addition & 1 deletion SentryLinux.slnf
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,4 @@
"test\\Sentry.Tunnel.Tests\\Sentry.Tunnel.Tests.csproj"
]
}
}
}
5 changes: 4 additions & 1 deletion SentryMac.slnf
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
"samples\\Sentry.Samples.GenericHost\\Sentry.Samples.GenericHost.csproj",
"samples\\Sentry.Samples.Google.Cloud.Functions\\Sentry.Samples.Google.Cloud.Functions.csproj",
"samples\\Sentry.Samples.Log4Net\\Sentry.Samples.Log4Net.csproj",
"samples\\Sentry.Samples.Maui\\Sentry.Samples.Maui.csproj",
"samples\\Sentry.Samples.ME.Logging\\Sentry.Samples.ME.Logging.csproj",
"samples\\Sentry.Samples.NLog\\Sentry.Samples.NLog.csproj",
"samples\\Sentry.Samples.Serilog\\Sentry.Samples.Serilog.csproj",
Expand All @@ -28,6 +29,7 @@
"src\\Sentry.Extensions.Logging\\Sentry.Extensions.Logging.csproj",
"src\\Sentry.Google.Cloud.Functions\\Sentry.Google.Cloud.Functions.csproj",
"src\\Sentry.Log4Net\\Sentry.Log4Net.csproj",
"src\\Sentry.Maui\\Sentry.Maui.csproj",
"src\\Sentry.NLog\\Sentry.NLog.csproj",
"src\\Sentry.Serilog\\Sentry.Serilog.csproj",
"src\\Sentry.Tunnel\\Sentry.Tunnel.csproj",
Expand All @@ -40,11 +42,12 @@
"test\\Sentry.Extensions.Logging.Tests\\Sentry.Extensions.Logging.Tests.csproj",
"test\\Sentry.Google.Cloud.Functions.Tests\\Sentry.Google.Cloud.Functions.Tests.csproj",
"test\\Sentry.Log4Net.Tests\\Sentry.Log4Net.Tests.csproj",
"test\\Sentry.Maui.Tests\\Sentry.Maui.Tests.csproj",
"test\\Sentry.NLog.Tests\\Sentry.NLog.Tests.csproj",
"test\\Sentry.Serilog.Tests\\Sentry.Serilog.Tests.csproj",
"test\\Sentry.Testing\\Sentry.Testing.csproj",
"test\\Sentry.Tests\\Sentry.Tests.csproj",
"test\\Sentry.Tunnel.Tests\\Sentry.Tunnel.Tests.csproj"
]
}
}
}
15 changes: 15 additions & 0 deletions SentryMaui.slnf
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"solution": {
"path": "Sentry.sln",
"projects": [
"samples\\Sentry.Samples.Maui\\Sentry.Samples.Maui.csproj",
"src\\Sentry.Extensions.Logging\\Sentry.Extensions.Logging.csproj",
"src\\Sentry.Maui\\Sentry.Maui.csproj",
"src\\Sentry\\Sentry.csproj",
"test\\Sentry.Extensions.Logging.Tests\\Sentry.Extensions.Logging.Tests.csproj",
"test\\Sentry.Maui.Tests\\Sentry.Maui.Tests.csproj",
"test\\Sentry.Testing\\Sentry.Testing.csproj",
"test\\Sentry.Tests\\Sentry.Tests.csproj"
]
}
}
4 changes: 3 additions & 1 deletion SentryNoSamples.slnf
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
"src\\Sentry.Extensions.Logging\\Sentry.Extensions.Logging.csproj",
"src\\Sentry.Google.Cloud.Functions\\Sentry.Google.Cloud.Functions.csproj",
"src\\Sentry.Log4Net\\Sentry.Log4Net.csproj",
"src\\Sentry.Maui\\Sentry.Maui.csproj",
"src\\Sentry.NLog\\Sentry.NLog.csproj",
"src\\Sentry.Serilog\\Sentry.Serilog.csproj",
"src\\Sentry.Tunnel\\Sentry.Tunnel.csproj",
Expand All @@ -24,11 +25,12 @@
"test\\Sentry.Extensions.Logging.Tests\\Sentry.Extensions.Logging.Tests.csproj",
"test\\Sentry.Google.Cloud.Functions.Tests\\Sentry.Google.Cloud.Functions.Tests.csproj",
"test\\Sentry.Log4Net.Tests\\Sentry.Log4Net.Tests.csproj",
"test\\Sentry.Maui.Tests\\Sentry.Maui.Tests.csproj",
"test\\Sentry.NLog.Tests\\Sentry.NLog.Tests.csproj",
"test\\Sentry.Serilog.Tests\\Sentry.Serilog.Tests.csproj",
"test\\Sentry.Testing\\Sentry.Testing.csproj",
"test\\Sentry.Tests\\Sentry.Tests.csproj",
"test\\Sentry.Tunnel.Tests\\Sentry.Tunnel.Tests.csproj"
]
}
}
}
5 changes: 4 additions & 1 deletion SentryWindows.slnf
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
"samples\\Sentry.Samples.GenericHost\\Sentry.Samples.GenericHost.csproj",
"samples\\Sentry.Samples.Google.Cloud.Functions\\Sentry.Samples.Google.Cloud.Functions.csproj",
"samples\\Sentry.Samples.Log4Net\\Sentry.Samples.Log4Net.csproj",
"samples\\Sentry.Samples.Maui\\Sentry.Samples.Maui.csproj",
"samples\\Sentry.Samples.ME.Logging\\Sentry.Samples.ME.Logging.csproj",
"samples\\Sentry.Samples.NLog\\Sentry.Samples.NLog.csproj",
"samples\\Sentry.Samples.Serilog\\Sentry.Samples.Serilog.csproj",
Expand All @@ -28,6 +29,7 @@
"src\\Sentry.Extensions.Logging\\Sentry.Extensions.Logging.csproj",
"src\\Sentry.Google.Cloud.Functions\\Sentry.Google.Cloud.Functions.csproj",
"src\\Sentry.Log4Net\\Sentry.Log4Net.csproj",
"src\\Sentry.Maui\\Sentry.Maui.csproj",
"src\\Sentry.NLog\\Sentry.NLog.csproj",
"src\\Sentry.Serilog\\Sentry.Serilog.csproj",
"src\\Sentry.Tunnel\\Sentry.Tunnel.csproj",
Expand All @@ -40,11 +42,12 @@
"test\\Sentry.Extensions.Logging.Tests\\Sentry.Extensions.Logging.Tests.csproj",
"test\\Sentry.Google.Cloud.Functions.Tests\\Sentry.Google.Cloud.Functions.Tests.csproj",
"test\\Sentry.Log4Net.Tests\\Sentry.Log4Net.Tests.csproj",
"test\\Sentry.Maui.Tests\\Sentry.Maui.Tests.csproj",
"test\\Sentry.NLog.Tests\\Sentry.NLog.Tests.csproj",
"test\\Sentry.Serilog.Tests\\Sentry.Serilog.Tests.csproj",
"test\\Sentry.Testing\\Sentry.Testing.csproj",
"test\\Sentry.Tests\\Sentry.Tests.csproj",
"test\\Sentry.Tunnel.Tests\\Sentry.Tunnel.Tests.csproj"
]
}
}
}
1 change: 1 addition & 0 deletions samples/Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

<PropertyGroup>
<IsPackable>false</IsPackable>
<SignAssembly>false</SignAssembly>
</PropertyGroup>

<ItemGroup>
Expand Down
14 changes: 14 additions & 0 deletions samples/Sentry.Samples.Maui/App.xaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?xml version = "1.0" encoding = "UTF-8" ?>
<Application xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:Sentry.Samples.Maui"
x:Class="Sentry.Samples.Maui.App">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Resources/Styles/Colors.xaml" />
<ResourceDictionary Source="Resources/Styles/Styles.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
11 changes: 11 additions & 0 deletions samples/Sentry.Samples.Maui/App.xaml.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
namespace Sentry.Samples.Maui;

public partial class App : Application
{
public App()
{
InitializeComponent();

MainPage = new AppShell();
}
}
14 changes: 14 additions & 0 deletions samples/Sentry.Samples.Maui/AppShell.xaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Shell
x:Class="Sentry.Samples.Maui.AppShell"
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:Sentry.Samples.Maui"
Shell.FlyoutBehavior="Disabled">

<ShellContent
Title="Home"
ContentTemplate="{DataTemplate local:MainPage}"
Route="MainPage" />

</Shell>
9 changes: 9 additions & 0 deletions samples/Sentry.Samples.Maui/AppShell.xaml.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
namespace Sentry.Samples.Maui;

public partial class AppShell : Shell
{
public AppShell()
{
InitializeComponent();
}
}
48 changes: 48 additions & 0 deletions samples/Sentry.Samples.Maui/MainPage.xaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Sentry.Samples.Maui.MainPage">

<ScrollView>
<VerticalStackLayout
Spacing="25"
Padding="30,0"
VerticalOptions="Center">

<Image
Source="dotnet_bot.png"
SemanticProperties.Description="Cute dot net bot waving hi to you!"
HeightRequest="200"
HorizontalOptions="Center" />

<Label
Text="Hello, World!"
SemanticProperties.HeadingLevel="Level1"
FontSize="32"
HorizontalOptions="Center" />

<Label
Text="Welcome to .NET Multi-platform App UI"
SemanticProperties.HeadingLevel="Level2"
SemanticProperties.Description="Welcome to dot net Multi platform App U I"
FontSize="18"
HorizontalOptions="Center" />

<Button
x:Name="CounterBtn"
Text="Click me"
SemanticProperties.Hint="Counts the number of times you click"
Clicked="OnCounterClicked"
HorizontalOptions="Center" />

<Button
x:Name="ExceptionBtn"
Text="Throw Exception"
SemanticProperties.Hint="Throws an unhandled exception"
Clicked="OnExceptionClicked"
HorizontalOptions="Center" />

</VerticalStackLayout>
</ScrollView>

</ContentPage>
Loading