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

C# 是否可以使用.NET CLI构建我的控制器?,c#,asp.net-core,asp.net-core-mvc,.net-core,asp.net-core-cli,C#,Asp.net Core,Asp.net Core Mvc,.net Core,Asp.net Core Cli,我将在上学习ASP.NET核心教程。我正在搭建一个控制器部分,我正在尝试从我的模型/DB上下文创建一个控制器。但是,当我按照指南中的说明操作时,我收到以下错误: 我尝试恢复NuGet包并创建一个新项目,但仍然遇到相同的错误。是否有一种使用.NET CLI构建控制器的方法?我以前从未见过,所以我自己也不知道怎么写 谢谢 编辑:我刚刚尝试了@Prafull8495的答案,并按照他的指示修改了我的项目文件。上面的错误不再出现,但现在我遇到了其他问题: 对于基于csproj的ASP.NET Core项

我将在上学习ASP.NET核心教程。我正在搭建一个控制器部分,我正在尝试从我的模型/DB上下文创建一个控制器。但是,当我按照指南中的说明操作时,我收到以下错误:

我尝试恢复NuGet包并创建一个新项目,但仍然遇到相同的错误。是否有一种使用.NET CLI构建控制器的方法?我以前从未见过,所以我自己也不知道怎么写

谢谢

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


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


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


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

另外,请确保项目中未引用以下包作为PackageReference

  • Microsoft.VisualStudio.Web.CodeGenerators.Mvc
  • Microsoft.VisualStudio.Web.CodeGeneration.Tools

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


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


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

另外,请确保项目中未引用以下包作为PackageReference

  • Microsoft.VisualStudio.Web.CodeGenerators.Mvc
  • Microsoft.VisualStudio.Web.CodeGeneration.Tools

如果您使用的是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,如《官方指南》中所示)构建控制器和视图-


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

如果您使用的是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,如《官方指南》中所示)构建控制器和视图-


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

可以使用下面的命令构建控制器

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

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

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

谢谢你的建议。正如你所说,我修改了我的项目文件,不再出现那个错误,但我现在得到了一个不同的堆栈跟踪(请参阅更新的描述)。@JamesKo你能在你的项目中提供包引用吗?我怀疑项目中直接引用的一些旧包可能会导致这种情况。谢谢您的建议。正如你所说,我修改了我的项目文件,不再出现那个错误,但我现在得到了一个不同的堆栈跟踪(请参阅更新的描述)。@JamesKo你能在你的项目中提供包引用吗?我怀疑项目中直接引用的一些旧包可能会导致这种情况。
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