C# 是否可以使用.NET CLI构建我的控制器?
我将在上学习ASP.NET核心教程。我正在搭建一个控制器部分,我正在尝试从我的模型/DB上下文创建一个控制器。但是,当我按照指南中的说明操作时,我收到以下错误: 我尝试恢复NuGet包并创建一个新项目,但仍然遇到相同的错误。是否有一种使用.NET CLI构建控制器的方法?我以前从未见过,所以我自己也不知道怎么写 谢谢 编辑:我刚刚尝试了@Prafull8495的答案,并按照他的指示修改了我的项目文件。上面的错误不再出现,但现在我遇到了其他问题: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项
对于基于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
(适用于针对1.1.x版ASP.NET Core的项目)
请注意,在这两种情况下,Microsoft.VisualStudio.Web.CodeGeneration.Tools
包的版本保持不变
另外,请确保项目中未引用以下包作为PackageReference
- Microsoft.VisualStudio.Web.CodeGenerators.Mvc
- Microsoft.VisualStudio.Web.CodeGeneration.Tools
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