Skip to content

ASP.NET Core MVC scaffolding fails in vs 2019 #104

@jrydow

Description

@jrydow

When using the following code in .net core 3 mvc web project the scaffolding of views fails.

public class HomeController : Controller
    {
        public IActionResult About()
        {
            ViewData["Message"] = $"Built from commit: {ThisAssembly.Git.Sha}";
            return View();
        }
}

When trying to scaffold a view via add->View I get this:

Finding the generator 'view'...
Running the generator 'view'...
Could not get the reflection type for Model : SubscriptionViewModel
   at Microsoft.VisualStudio.Web.CodeGeneration.ActionInvoker.<BuildCommandLine>b__6_0()

If I remove the {ThisAssembly.Git.Sha} I have no problem scaffolding a view.

Steps to reproduce in VS 2019:

  1. File -> New project ASP .net Core Web Application
  2. Give a name, Create
  3. use .net core, ASP .net core 3.0, Web application (Model-Veiw-Controller)
  4. Add this class to Models
namespace ScaffoldFail.Models
{
    public class CustomerViewModel
    {
        public int MyProperty { get; set; }
    }
}
  1. Add nuget gitinfo version 2.0.21, latest at time of writing.
  2. Add this to Home Controller:
        public IActionResult About()
        {
            ViewData["Message"] = $"Built from commit: {ThisAssembly.Git.Sha}";
            return View();
        }
  1. Right click Views (in solution explorer) -> Add -> view
  2. View name: Details, Template: Details Model class: CustomerViewModel -> Click Add
    After a while a dialog shows up saying 'Could not get the reflrction type for Model : CustomerViewModel'.
    The Output window gives the following information:
Finding the generator 'view'...
Running the generator 'view'...
Could not get the reflection type for Model : CustomerViewModel
   at Microsoft.VisualStudio.Web.CodeGeneration.ActionInvoker.<BuildCommandLine>b__6_0()
   at Microsoft.Extensions.CommandLineUtils.CommandLineApplication.Execute(String[] args)
   at Microsoft.VisualStudio.Web.CodeGeneration.ActionInvoker.Execute(String[] args)
   at Microsoft.VisualStudio.Web.CodeGeneration.CodeGenCommand.Execute(String[] args)

Modifying the line in HomeController to this:

        public IActionResult About()
        {
            ViewData["Message"] = $"Built from commit: ";// {ThisAssembly.Git.Sha}";
            return View();
        }

and try to scaffold again (redo point 7 and 8 above) and the scaffolding does produce what it is supposed to. This means that using ThisAssembly.Git.Sha breaks the scaffolding of views.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions