asp.net-coreasp.net-identityasp.net-mvc-scaffolding

Why does Scaffolding Identity for .NET Core 3.1 and .NET 5 in Visual Studio 2019 16.9.5 fail?


I'm trying to generate Identity Account\Login and Account\Register pages in a new project. I've tried both .NET Core 3.1 and .NET 5; in both cases, even when it's a new project, I receive the following error message:

enter image description here

An incredibly helpful error message, as you can tell. Does anybody know what can cause this with .NET Core 3.1 or .NET 5 projects and how to fix it? I've got VS2019 v16.9.5 installed, Microsoft's IdentityServer v.5.0.6, EntityFrameworkCore v.5.0.6, Identity.UI v5.0.6, and CodeGeneration.Design v.5.0.2 all installed for my .NET 5 project, and whatever the default versions of those packages for the new .NET Core 3.1 project. Both projects fail to correctly scaffold the needed files.


Solution

  • I found a workaround for this error by using the dotnet CLI outside of Visual Studio to execute the scaffolding tool. The following steps use the aspnet-codegenerator tool to scaffold the full Identity pages area into your .Net Core 5 app.

    1.Close Visual Studio.

    2.Open a command prompt and change directories to the project location.

    3.Make sure the aspnet-codegenerator tool is installed on your machine by executing this command:

    dotnet tool install -g dotnet-aspnet-codegenerator

    4.Add Microsoft.VisualStudio.Web.CodeGeneration.Design package to the project if it does not already exist in your project.

    Install-Package Microsoft.VisualStudio.Web.CodeGeneration.Design

    5.Run the following command where YourAppName.Models.ApplicationDbContext is the namespace to your DbContext:

    dotnet aspnet-codegenerator identity -dc YourAppName.Models.ApplicationDbContext

    If the command completed without errors that should have fixed the “There was an error running the selected code generator” issue and created the necessary Identity Pages under Areas/Identity/Pages.

    enter image description here

    dotnet aspnet-codegenerator also has the ability to scaffold only specific files versus all the Identity files if you don’t need the full set by passing in the -files parameter followed by the files you want to create.

    dotnet aspnet-codegenerator identity -dc MyApp.Models.ApplicationDbContext –files “Account.Register;Account.Login;Account.Logout”

    Further you need to add following packages in project Microsoft.AspNetCore.Identity.UI,Microsoft.EntityFrameworkCore.Design