/avalonia-dotnet-templates

Avalonia Templates for `dotnet new`

Primary LanguageC#MIT LicenseMIT

downloads Current stable version

Avalonia Templates for dotnet new

For more information about dotnet new templates see here.

Installing the templates

Run from a command line (.NET 7+):

dotnet new install Avalonia.Templates

For .NET 6, the argument is --install:

dotnet new --install Avalonia.Templates

The templates should now be available in dotnet new list:

Template Name                        Short Name                 Language  Tags
-----------------------------------  -------------------------  --------  -----------------------------------------
Avalonia .NET App                    avalonia.app               [C#],F#   Desktop/Xaml/Avalonia/Windows/Linux/macOS
Avalonia .NET MVVM App               avalonia.mvvm              [C#],F#   Desktop/Xaml/Avalonia/Windows/Linux/macOS
Avalonia Cross Platform Application  avalonia.xplat             [C#],F#   Desktop/Xaml/Avalonia/Web/Mobile
Avalonia Resource Dictionary         avalonia.resource                    Desktop/Xaml/Avalonia/Windows/Linux/macOS
Avalonia Styles                      avalonia.styles                      Desktop/Xaml/Avalonia/Windows/Linux/macOS
Avalonia TemplatedControl            avalonia.templatedcontrol  [C#],F#   Desktop/Xaml/Avalonia/Windows/Linux/macOS
Avalonia UserControl                 avalonia.usercontrol       [C#],F#   Desktop/Xaml/Avalonia/Windows/Linux/macOS
Avalonia Window                      avalonia.window            [C#],F#   Desktop/Xaml/Avalonia/Windows/Linux/macOS

Note:

By default dotnet CLI would create a C# template,if you want to create F# template you will need to add -lang F# to the end of the command.

Creating a new Application

To create a new barebones application called MyApp in its own subdirectory, run:

dotnet new avalonia.app -o MyApp

Available parameters:

-f, --framework

Description: The target framework for the project.

Options: net9.0, net8.0

By default: net9.0

-av, --avalonia-version

Description: The target version of Avalonia NuGet packages.

By default: 11.2.1

-cb, --compiled-bindings

Description: Defines if CompiledBindings should be enabled by default in the project (only supported in 11.0 version and newer). See documentation for more details.

Options: true, false

By default: true

--no-restore

Description: If specified, skips the automatic restore of the project on create.

Creating a new MVVM Application

MVVM is the recommended pattern for creating Avalonia applications. The MVVM application template uses ReactiveUI to ease building applications with complex interactions.

To create a new MVVM application called MyApp in its own subdirectory, run:

dotnet new avalonia.mvvm -o MyApp

Available parameters:

-f, --framework

Description: The target framework for the project.

Options: net9.0, net8.0

By default: net9.0

-av, --avalonia-version

Description: The target version of Avalonia NuGet packages.

By default: 11.2.1

-cb, --compiled-bindings

Description: Defines if CompiledBindings should be enabled by default in the project (only supported in 11.0 version and newer). See documentation for more details.

Options: true, false

By default: true

-m, --mvvm

Description: MVVM toolkit to use in the template.

Options: ReactiveUI, CommunityToolkit

By default: ReactiveUI

-rvl, --remove-view-locator

Description: Defines if your app will use default ViewLocator made by Avalonia Team or you are planning to use a custom one. Removing ViewLocator may be useful in code trimming scenarios. Default ViewLocator is not trimming-friendly.

Options: true, false

By default: false

--no-restore

Description: If specified, skips the automatic restore of the project on create.

Creating a new Cross-Platform application

To create a new Cross-Platform application in its own subdirectory, run:

dotnet new avalonia.xplat 

Note: This type of template allows you to create an application that will work on Desktop, Browser and Mobile (iOS & Android). Only available with 11.0 preview versions.

Available parameters:

-cb, --compiled-bindings

Description: Defines if CompiledBindings should be enabled by default in the project. See documentation for more details.

Options: true, false

By default: true

-m, --mvvm

Description: MVVM toolkit to use in the template.

Options: ReactiveUI, CommunityToolkit

By default: ReactiveUI

-av, --avalonia-version

Description: The target version of Avalonia NuGet packages.

By default: 11.2.1

-rvl, --remove-view-locator

Description: Defines if your app will use default ViewLocator made by Avalonia Team or you are planning to use a custom one. Removing ViewLocator may be useful in code trimming scenarios. Default ViewLocator is not trimming-friendly.

Options: true, false

By default: false

-cpm

Description: Defines if your app will use Central Package Management (CPM). If disabled, Directory.Build.props will be created with shared Avalonia version.

Options: true, false

By default: true

Creating a new Window

To create a new Window called MyNewWindow, in the namespace MyApp run:

dotnet new avalonia.window -na MyApp -n MyNewWindow

Creating a new UserControl

To create a new UserControl called MyNewView, in the namespace MyApp run:

dotnet new avalonia.usercontrol -na MyApp -n MyNewView

Creating a new Styles list

To create a new Styles list called MyStyles, run:

dotnet new avalonia.styles -n MyStyles

Creating a new ResourceDictionary

To create a new ResourceDictionary called MyResources, run:

dotnet new avalonia.resource -n MyResources