This guide will walk you through the set-up process for building WebAssembly apps with Uno under Windows, Linux, or macOS.
See these sections for information about using Uno Platform with:
- Visual Studio Code
- .NET SDK
- .NET 6.0 SDK (version 6.0 (SDK 6.0.100) or later)
Use
dotnet --version
from the terminal to get the version installed. - The Uno Platform Visual Studio Code Extension
You can use uno-check
to make your installation compatible with Uno Platform.
In the terminal, type the following to create a new project:
dotnet new unoapp -o MyApp -ios=false -android=false -macos=false -skia-tizen=false -skia-wpf=false -skia-linux-fb=false --vscode
MyApp
is the name you want to give to your project.
This will create a solution that only contains the WebAssembly and Skia+GTK platforms support.
-
Open the project using Visual Studio Code. In the terminal type
code ./MyApp
For this command to work you need to previously have configured Visual Studio Code to be launched from the terminal.
-
Visual Studio Code will ask to restore the NuGet packages.
-
Once the project has been loaded, in the status bar,
MyApp.sln
is selected by default. SelectMyApp.Wasm.csproj
orMyApp.Skia.Gtk.csproj
instead.
-
In
MainPage.xaml
, replace the Grid's content with the following:<StackPanel> <TextBlock x:Name="txt" Text="Hello, world!" Margin="20" FontSize="30" /> <Button Content="click" Click="{x:Bind OnClick}" /> </StackPanel>
-
In your
MainPage.xaml.cs
, add the following method:private void OnClick() { var dt = DateTime.Now.ToString(); txt.Text = dt; }
- In the debugger section of the Code activity bar, select
Debug (Chrome, WebAssembly)
- Press
F5
to start the debugging session - Place a breakpoint inside the
OnClick
method - Click the button in the app, and the breakpoint will hit
- In the debugger section of the Code activity bar, select
Skia.GTK (Debug)
- Press
F5
to start the debugging session - Place a breakpoint inside the
OnClick
method - Click the button in the app, and the breakpoint will hit
Note that C# Hot Reload is not available when running with the debugger. In order to use C# Hot Reload, run the app using the following:
- On Windows, type the following:
$env:DOTNET_MODIFIABLE_ASSEMBLIES="debug" dotnet run
- On Linux or macOS:
export DOTNET_MODIFIABLE_ASSEMBLIES=debug dotnet run
1. In the MyApp.Shared folder, create a new file named `Page2.xaml`
2. Type `page` then press the `tab` key to add the page markup
3. Adjust the name and namespaces as needed
4. In the MyApp.Shared folder, create a new file named `Page2.xaml.cs`
5. Type `page` then press the `tab` key to add the page code-behind C#
6. Adjust the name and namespaces as needed
1. In the MyApp.Shared folder, create a new file named `UserControl1.xaml`
2. Type `usercontrol` then press they `tab` key to add the page markup
3. Adjust the name and namespaces as needed
4. In the MyApp.Shared folder, create a new file named `UserControl1.xaml.cs`
5. Type `usercontrol` then press the `tab` key to add the page code-behind C#
6. Adjust the name and namespaces as needed
1. In the MyApp.Shared folder, create a new file named `ResourceDictionary1.xaml`
2. Type `resourcedic` then press they `tab` key to add the page markup
* `rd` creates a new `RowDefinition`
* `cd` creates a new `ColumnDefinition`
* `tag` creates a new XAML tag
* `set` creates a new `Style` setter
* `ctag` creates a new close XAML tag
An existing application needs additional changes to be debugged properly.
- At the root of the workspace, create a folder named
.vscode
- Inside this folder, create a file named
launch.json
and copy the contents of this file. - Inside this folder, create a file named
tasks.json
and copy the contents of this file.
- C# Debugging is not supported when running in a remote Linux Container, Code Spaces or GitPod.
- C# Hot Reload for WebAssembly only supports modifying method bodies. Any other modification is rejected by the compiler.
- C# Hot Reload for Skia supports modifying method bodies, adding properties, adding methods, adding classes. A more accurate list is provided here in Microsoft's documentation.
If you're not sure whether your environment is correctly configured for Uno Platform development, running the uno-check
command-line tool should be your first step.
The Uno Platform extension provides multiple output windows to troubleshoot its activities:
- Uno Platform, which indicates general messages about the extension
- Uno Platform - Hot Reload, which provides activity messages about the Hot Reload feature
- Uno Platform - XAML, which provides activity messages about the XAML Code Completion feature
If the extension is not behaving properly, try using the Developer: Reload Window
(or Ctrl+R
) command in the palette.
If you continue experiencing issues with Visual Studio and Uno Platform, please visit our Discord - #uno-platform channel or StackOverflow where our engineering team and community will be able to help you.