是否可以使用.NET CLI来构建我的控制器?

时间:2017-02-12 02:16:32

标签: c# asp.net-core asp.net-core-mvc .net-core asp.net-core-cli

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

enter image description here

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

谢谢!

编辑:我刚刚尝试了@ Prafull8495的答案并按照指示修改了我的项目文件。上面的错误不再弹出,但现在我正在点击别的东西:

enter image description here

3 个答案:

答案 0 :(得分:2)

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

<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

答案 1 :(得分:0)

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

要使用Code Generator软件包,首先需要将其包含在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创建具有读写操作的Controller。如果没有model或dbcontext,它将创建空控制器。您可以在控制器参数之后使用--help命令行开关来获取有关控制器生成器的更多选项。

答案 2 :(得分: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