Umbraco on .NET 5+

    This article is intended for keeping an overview of all the information, official as well as unofficial, currently available on the release of Umbraco on .NET 5.

    Are you aware of some information about Umbraco on .NET 5 that isn't already added to this list? Please feel free to submit a Pull Request by using the Edit this page button at the top of this article.

    In this article you will find detailed instructions on how to try out and test Umbraco on .NET 5. You will also find a list of relevant links to official as well as unofficial resources on the release.

    Umbraco 9 Documentation

    We have started verifying the current documentation against Umbraco 9.

    You can find a complete list of all updated articles on the Umbraco 9 Articles page.

    News and updates from Umbraco HQ

    In this section you will find links to news and updates from the .Net Core team at Umbraco HQ, as well as from the UniCore community team.

    Blog posts

    Other resources

    Community resources

    In this section you will find a list of Umbraco .Net Core resources provided by the Umbraco Community.

    Community blog posts


    Umbraco 9 (.NET 5)

    To get started, follow the steps outlined below.


    • .NET 5 SDK
    • SQL connection string (MS SQL Server/Azure), unless you want to install using SQL CE (Compact Edition)

    Steps to install the Umbraco dotnet new template

    1. Install the new Umbraco dotnet template:

      dotnet new -i Umbraco.Templates

    [Optional] Update the template from earlier pre-release versions

    If you have already installed the Umbraco dotnet new template, you will need ensure it is up-to-date

    1. Use a command prompt of your choice to update the dotnet new templates

      dotnet new -i Umbraco.Templates

    Steps to create an Umbraco Project using the dotnet new template

    1. Create a new empty Umbraco project using MS SQL Azure/Server:

      dotnet new umbraco -n MyCustomUmbracoProject

      Or if you prefer to using SQL CE:

      dotnet new umbraco --SqlCe -n MyCustomUmbracoProject

    You will now have a new project with the name MyCustomUmbracoProject, or whichever name you chose.

    The new project can be opened and run using your favorite IDE or you can continue to use the CLI commands.

    [Optional] Error message 'No template found matching: Umbraco'

    If you are sure that you've installed the templates (see the previous step) but the command prompt keeps telling you that there is "No template found matching: Umbraco" then you can 'work around' by detailing the specific version in the --nuget-source option.

    foutmelding opdrachtprompt

    dotnet new --install Umbraco.Templates::9.0.1 --nuget-source

    Where 9.0.1 is replaced with the latest version that is available that you are trying to install.

    Steps to build and run

    The following steps, will continue using CLI based on the steps above.

    1. Navigate to the newly created project folder:

      cd MyCustomUmbracoProject
    2. Build and run the new Umbraco .Net Core project:

      dotnet build
      dotnet run

    The project is now running on the Kestrel server and is available on the ports listed in the console.

    The next step is to run through the Umbraco CMS installation. If you chose to use MS SQL Server/Azure you will need to add your connection string during this setup process.

    Once the installation process is complete you might need to manually restart the application in order to start the application again and get access to the Umbraco backoffice.

    Umbraco 9 Nightly Builds

    To get the latest nightly builds - the latest version of the Umbraco dotnet template, you will need to add another NuGet source.

    1. Use a command prompt of your choice to insert this custom NuGet feed:
    dotnet nuget add source "" -n "Umbraco Nightly"
    1. Install the new Umbraco dotnet template

      dotnet new -i Umbraco.Templates::9.0.0-preview*

    In order to get the latest template from the new source, you will need to use a wildcard symbol like shown above.

    Now you can continue in the same way as if you were using the release candidate version

    Package development

    Since Alpha 4, we have added a new template to in Umbraco.Templates package which is targeting packages.

    To use the new template write:

    dotnet new umbracopackage -n MyCustomUmbracoPackage

    This generates an empty package with an empty package.manifest. But more importantly it also contains a build/MyCustomUmbracoPackage.targets file.

    This file will be included in the NuGet package when using dotnet pack.

    The file contains an msbuild target that is executed on build when a project has a dependency to this package. It copies the app_plugin folder into the project. This is required for having Umbraco packages as NuGet packages.

    Furthermore, we introduced a new flag on the regular dotnet new umbraco template. You can now write:

    dotnet new umbraco -n MyCustomUmbracoProject -p MyCustomUmbracoPackage

    This new -P indicates that the project is a test-site of the package MyCustomUmbracoPackage. It will add a project dependency to MyCustomUmbracoPackage and import the target file from that project. So when you build the new project, it will also copy the App_Plugins folder from the package project into the project. In the same way, as if it was a NuGet reference.

    Full example

    The following example shows how to use the templates in combination

    dotnet new umbracopackage -n MyCustomUmbracoPackage
    dotnet new umbraco -n MyCustomUmbracoPackage.Testsite -p MyCustomUmbracoPackage
    cd MyCustomUmbracoPackage.Testsite
    dotnet build

    Changes between alpha 4 and beta 1

    See tickets tagged on Github for a full overview.


    • Members
      • Members are updated to ASP.NET Core Identity
      • Member passwords are rolled to a stronger hashing algorithm on member login
      • Members have stored a security stamp
      • Public Access Restrictions is updated to use the new member implementation
    • Events
      • The remaining events are migrated to the new notification pattern
      • Added TreeAlias to tree notifications.
    • Other
      • IUmbracoMapper should be injected instead of UmbracoMapper
      • Features and optimizations from Umbraco 8.13
    • Bugfixes
      • Fix for Can't enable AppData mode for models builder in Alpha4
      • Fix warning logged regarding Antiforgery tokens
      • Fix for problem with models builder and nested content
      • Fix for ContentCacheRefresherNotification is dispatching every 10 seconds FileSystem changes??

    Changes between beta 1 and beta 2

    See tickets tagged on Github for a full overview.


    • Breaking changes
      • HideTopLevelNodeFromPath default value changed to to true.
      • All notifications moved to the same namespace to make them easily discoverable
        • More notifications also postfixed with "Notification". ServerVariablesParsing => ServerVariablesParsingNotification.
      • The order of view location changes, so /Views is the first to search.
      • "WebRouting:DisableRedirectUrlTracking" configuration changed from string to bool.
    • Features
      • Added API to validate user creadentials without actually logging them in.
      • Reintroduced missing overloads for GetCropUrl.
      • Enabled Microsoft SouceLink Debugging Feature.
      • Added localizable error descriptors for Users and Members
      • Replaced System.Drawing with ImageSharp when extracting the height and width of uploaded images.
    • Bugfixes
      • Fixed issue with scheduled publishing.
      • Fixed issues where the runtime lever was not used correct.
      • Fixed issue with ModelsBuilder when using inherited Document Types.
      • Fixed issues where the javascript minifier was too agressive.
      • Fixed issue with hardcoded '' as directory separator char (Linux issue).
      • Fixed issue in the Danish translation file leading to error doing install.

    Changes between beta 2 and beta 3

    See tickets tagged on Github for a full overview.


    • Breaking changes
      • Examine 2.0 implementation.
      • ModelsBuilder mode names are changed.
        • PureLive => InMemoryAuto
        • AppData => SourceCodeManual
        • LiveAppData => SourceCodeAuto
    • Scope optional parameter ordering
    • Features
      • Restart not required on install.
      • Modelsbuilder InMemoryAuto (PureLive) output is generated in temp folder
      • Latests updated from Umbraco 8.14-RC
    • Bugfixes
      • Fix for unsafe project names; these are no longer unsafe for namespaces.
        • E.g. "Umbraco 9" will now use namespace "Umbraco_9"
      • Resolve virtual paths from DataEditorAttribute. E.g. "~/App_Data/...."

    Changes between beta 3 and beta 4

    See tickets tagged on Github for a full overview.


    • Features
      • Added notifications when emails are sent
      • Allow Css / JS assets to be added via c# code in addition to package.manifest
    • Bugfixes
      • Moved extensions methods from HtmlHelper to IHtmlHelper
      • Fixed issue with saving data types
      • Fixed issue with recurring tasks executing too often.
      • Fixed serialization issues with data types
      • Fixed issue with View Model validation failing when using value types
      • Added missing friendly overload for IsAllowedTemplate
      • Fixed issues with the Umbraco dotnet new templates
      • Project name is not set
      • Unattended install info is now json escaped
      • Fixed issue with updating password
      • Fixed issue with members not approved by default when using the build-in macro snippets
      • Fixed issues with MediaPicker3

    Changes between beta 4 and rc 1

    See tickets tagged on Github for a full overview.


    • Breaking changes
      • Methods obsoleted in 8.15 removed
      • Route plugin controllers by area
      • RenderController configuration as .NETCore IOptions pattern
    • Features
      • Packages migrations and UI changes to support NuGet packages.
      • 8.15 features
    • Bugfixes
      • Changes the RoslynCompiler to use assemblies resolved from the DependencyContext (Fix for MB InMemoryAuto)
      • Migrated missing surfaceaction extension methods
      • Add RazorCompileOnPublish property to UmbracoProject for template
      • Migrated missing UmbracoAuthorizedController
      • Linux case-sensitive directories (Grid)
      • Render grid editor partial async
      • Render Block List component partial async
      • Use english names for cultures in language CRUD
      • Rebuild Database Cache button does nothing

    Changes between rc 1 and rc 2

    See tickets tagged on Github for a full overview.


    • Breaking changes
      • Fixes issues after ImageProcessor or ImageSharp migrations related to querystrings
      • Removed VariationContextAccessor from IUmbracoContext
      • Removed things that was obsolete in latest v8
    • Features
      • Pack the physical files into packages when picking media
      • Changes all collections from collection builders to resolve the concrete instances lazily
      • Updated public IUmbracoBuilder extension methods to allow chaining
      • Adds bundle options to the package manifest
      • Added more common namespaces to _ViewImports.cshtml
      • Updated nuget dependencies
      • Added basic authentication middleware
      • 8.16-RC merged in
    • Bugfixes
      • One overload of GetLocalCropUrl was calling itself recursively
      • Fix issue with runtime hash calculation
      • Fixes issue that the update culture dates were not synced with the version date like they are for the published culture dates
      • Various Typo fixes
      • Fix recursive localize when resetting password
      • Fix drag and drop image upload
      • Fixes various issues related to showing error/validation messages
      • Fixes issue with MultiUrlPicker
      • Fixed race condition with EnsureApplicationMainUrl
      • Fixed issue with BlockLiost thumbnails could be picked in non-browsable folders
      • Fixes for the dotnet new templates, related to publish of Umbraco
      • Added "JetBrains.Annotations" to assembly exclusion list
      • Fixed issue so it doesn't explode when saving content during a migration
      • Fixed issue with CachePartial
      • Fix RedirectToCurrentUmbracoPage when UrlProviderMode is set to "Absolute"
      • Fix Grid editor headline gets encoded twice
      • Fixed issue with public acces, if member didnt have a member group, restricting access to the public would always lead to error page
      • Added missing disposel of Process
      • Avoid mixing using of string interpolation and string formatting in log messages
      • Reduce allocations by using existing CharArrays for TrimStart()
      • Cleanup _inMemoryModelFactory.ModelsChanged event on dispose in RefreshingRazorViewEngine

    Changes between rc 2 and rc 3

    See tickets tagged on Github for a full overview.


    • Breaking changes

      • Umbraco 8.17rc features including Tabs
      • Updated to latest Examine version
      • Removed obsolete propertyes from User and IUser
      • IEmailServer now required an email type
    • Features

      • Added support for configuring the UmbracoFile serilog "Sink" in appsettings.
      • Added helper method for replacing the BackOfficeUserManager
    • Bugfixes

      • Added missing Action of GetAncestors that uses key instead of id
      • Fixed issue with path parsing with Image Cropper
      • Fixed issues with invalid characters in the Umbraco package dotnet new template
      • Fixed issues with structured logging in IProfilingLogger
      • Fixed issues when changing UmbracoPath in config
      • Fixed issue with translations keys shown instead of the translated values
      • Fixed issues with Block list thumbnail selector on Linux
      • Suppresses scope notifications dutin migrations to avoid handlers to execute before packages are ready.

    Changes between rc 3 and rc 4

    See tickets tagged on Github for a full overview.


    • Features

      • Added option to set NoNodesViewPath in umbraco template.
      • Add LocalDB database install option and implement automatic database creation (Breaking)
      • Updated NuGet dependencies
      • Renames of ServerRole values (Breaking)
      • Added folder keys to package xml and restore using these keys (Breaking)
    • Performance improvements

      • Optimizations for empty recycle bin
    • Bugfixes

      • Fixed issue with backoffice UI notifications not shown when using SimpleNotificationsModel
      • Multiple fixes for tabs
      • /umbraco not redirects to the install screen when a upgrade is required.
      • Route hijacking with restricted public access - protected page request is not handled by custom login page controller
      • Fixes for uploading big files
      • Fix for directory values not working when language and region information on the hosting machine is different.
      • Fix concurrency and certificate days to expiry issues in HttpsCheck
      • Fix when connectionstring umbracoDbDSN key was missing
      • Fix for when ApplicationMainUrl is set in config
      • Culture fixes for when backoffice user or Host machine is Swedish
      • Bugfix for SqlMaindomLock
      • Linux casing issues

    Changes between rc 4 and 9.0.0

    See tickets tagged on Github for a full overview.


    • Bugfixes
      • Member groups stopped working
      • Content finder causing redirect to /account/accessdenied
      • Fixed integer parsing issues when using swedish culture
      • Reintroducting some missing translation keys.

    Umbraco Forms 9 (.NET Core) Beta

    On Friday 4th June a beta release of the Umbraco Forms package for V9 was released.

    It's available from the Umbraco prerelease MyGet feed used for the CMS betas.

    dotnet nuget add source "" -n "Umbraco Prereleases"

    And the package name is: Umbraco.Forms.9.0.0-beta002.

    With an Umbraco V9 application running rc1, you can install the package with the following command:

    dotnet add package Umbraco.Forms --version 9.0.0-beta002

    And then restart the web application with:

    dotnet run

    You'll find the Forms documentation updated where necessary for V9, mostly around configuration and some changes to method signatures when extending Forms with custom workflow and field types.

    If you find any issues, we'd appreciate reports at the public issue tracker. If you could please prefix any issues with "V9: " that would be useful to distinguish them from anything raised for other versions.