Search code examples
c#asp.net-mvccode-generationvisual-studio-2019asp.net-core-scaffolding

When I scaffold a controller in Asp.net Core (MVC), I get a Code generation error


I was developing a web application (Asp.net Core 2.0 MVC) using Visual Studio 2017, then i transferred to Visual Studio 2019. then I changed the target framework from .NET Core 2.0 to .NET Core 2.2. after that, I created Models from Database using (Scaffold-DbContext) command.

Then i Followed next Steps:

  1. Right-Click on Controller Folder.
  2. Add.
  3. New Scaffolded Item.
  4. MVC Controller with views, using Entity Framework.
  5. Select Model, DbContext, Controller Name.
  6. Add.

Then i get this Error

This is part of .csproj file:

<ItemGroup>
  <PackageReference Include="Microsoft.AspNetCore.All" Version="2.2.5" />
  <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.0.0-preview5.19227.1" PrivateAssets="All" />
  <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.0.0-preview5-19264-04" PrivateAssets="All" />
</ItemGroup>

<ItemGroup>
  <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.1" />
  <DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="2.0.0" />
  <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.2" />
</ItemGroup>

If you need any further information, please let me know.


Solution

  • You shouldn't be using the 3.0.0-preview5.19227.1 version packages of Microsoft.EntityFrameworkCore.Tools or Microsoft.VisualStudio.Web.CodeGeneration.Design in what looks liks a version 2.2 app, you need to use the 2.2.x versions of those packages.

    Try changing the versions to the following:

    <ItemGroup>
      <PackageReference Include="Microsoft.AspNetCore.All" Version="2.2.5" />
      <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.2.4" PrivateAssets="All" />
      <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.2.3" PrivateAssets="All" />
    </ItemGroup>