当我在 Asp.net Core (MVC) 中构建控制器时,出现代码生成错误

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

我正在使用 Visual Studio 2017 开发 Web 应用程序(Asp.net Core 2.0 MVC),然后我转到 Visual Studio 2019。然后我将目标框架从 .NET Core 更改为2.0 到 .NET 核心 2.2。 之后,我使用 (Scaffold-DbContext) 命令从数据库创建了模型。

然后我执行了后续步骤:

  1. 右键单击控制器文件夹。
  2. 添加。
  3. 新脚手架项目。
  4. 带视图的 MVC 控制器,使用 Entity Framework。
  5. Select 模型、DbContext、控制器名称。
  6. 添加。

然后我明白了 Error

这是 .csproj 文件的一部分:

<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>

如果您需要任何进一步的信息,请告诉我。

你不应该在看起来像 2.2 版应用程序的地方使用 Microsoft.EntityFrameworkCore.ToolsMicrosoft.VisualStudio.Web.CodeGeneration.Design 的 3.0.0-preview5.19227.1 版本包,你需要使用 2.2.x 那些包的版本。

尝试将版本更改为以下版本:

<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>