0

我正在关注https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-mvc-app/adding-model上的 ASP.NET Core 教程。我已经到了Scaffolding a Controller部分,我正在尝试从我的模型/数据库上下文中创建一个控制器。但是,当我按照指南中的说明进行操作时,我收到此错误:

在此处输入图像描述

我尝试恢复 NuGet 包并创建一个新项目,但我仍然遇到同样的错误。有没有办法使用 .NET CLI 搭建控制器的脚手架?我以前从未见过,所以我不知道如何自己写一个。

谢谢!

编辑:我刚刚尝试了@Prafull8495 的回答并按照他的指示修改了我的项目文件。上述错误不再弹出,但现在我遇到了其他问题:

在此处输入图像描述

4

3 回答 3

2

对于基于 csproj 的 ASP.NET Core 项目,您需要确保存在以下引用(针对 ASP.NET Core 的 1.0.x 版本)

<ItemGroup>    
  <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="1.0.0-msbuild3-final" />
  <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.0-msbuild3-final" />
</ItemGroup>

(针对 1.1.x 版 ASP.NET Core 的项目)

<ItemGroup>    
  <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="1.1.0-msbuild3-final" />
  <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.0-msbuild3-final" />
</ItemGroup>

请注意,Microsoft.VisualStudio.Web.CodeGeneration.Tools包的版本在这两种情况下都保持不变。

还要确保项目中没有将以下包作为 PackageReference 引用

  • Microsoft.VisualStudio.Web.CodeGenerators.Mvc
  • Microsoft.VisualStudio.Web.CodeGeneration.Tools
于 2017-02-12T02:44:45.840 回答
0

如果您使用的是project.json ,请遵循此方法。

要使用代码生成器包,首先你需要project.json像这样将它包括在内 -

"dependencies": {
  "Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
    "version": "1.0.0-preview2-final",
    "type": "build"
  },
  "Microsoft.VisualStudio.Web.CodeGenerators.Mvc": {
    "version": "1.0.0-preview2-final",
    "type": "build"
  }
},
"tools": {
  "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final",
  "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
  "Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
    "version": "1.0.0-preview2-final",
    "imports": [
      "portable-net45+win8"
    ]
  }
}

dotnet restore现在您可以使用命令恢复包。完成后,您可以使用以下命令(或从 Visual Studio 中,如官方指南中所示)搭建控制器和视图 -

dotnet aspnet-codegenerator --project . controller -name HelloController -m Author -dc WebAPIDataContext

上面的命令将在根目录中生成名称为 HelloController 的控制器,并在 Views 文件夹下的 Hello 文件夹中生成 CRUD 选项的视图。请注意,以上示例命令将帮助您使用模型和 EF 创建具有读写操作的控制器。如果没有模型或 dbcontext,它将创建空控制器。您可以--help在控制器参数后使用命令行开关来获取有关控制器生成器的更多选项。

于 2017-02-12T06:27:52.753 回答
0

可以使用以下命令搭建控制器

dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design
dotnet add package Microsoft.EntityFrameworkCore.Design
dotnet tool install --global dotnet-aspnet-codegenerator
dotnet aspnet-codegenerator controller -name TodoItemsController -async -api -m TodoItem -dc TodoContext -outDir Controllers
于 2019-10-17T12:27:42.577 回答