Dan*_*ram 17 c# .net-core asp.net-core dotnet-cli
在Ruby on Rails中,您可以在命令行中使用以下内容生成控制器:
$ rails generate controller ControllerName action1 action2 ...etc
dotnetcore cli中是否有类似的东西用于生成控制器?
从我能找到的内容来看,dotnetcore cli在你可以做的命令中似乎非常有限.我确实从微软的文档中找到了关于扩展cli的内容,但我对如何为这样的命令执行此操作并不自信.
UPDATE
使用@Sanket的答案,我能够为我的dotnetcore应用程序生成控制器.但是我遇到了一个错误
Package Microsoft.Composition 1.0.27 is not compatible with netcoreapp1.1 (.NETCoreApp,Version=v1.1). Package Microsoft.Composition 1.0.27 supports: portable-net45+win8+wp8+wpa81 (.NETPortable,Version=v0.0,Profile=Profile259)
One or more packages are incompatible with .NETCoreApp,Version=v1.1.
Run Code Online (Sandbox Code Playgroud)
为了解决这个问题,我"net451"在netcoreapp1.1依赖项的框架import语句中添加了.
project.json我的空项目的简单文件(使用@ Sanket的project.json模板)看起来像这样:
{
"version": "1.0.0-*",
"buildOptions": {
"debugType": "portable",
"emitEntryPoint": true
},
"dependencies": {
"Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
"version": "1.1.0-preview4-final",
"type": "build"
},
"Microsoft.VisualStudio.Web.CodeGenerators.Mvc": {
"version": "1.1.0-preview4-final",
"type": "build"
},
"Microsoft.AspNetCore.Mvc": "1.0.0-*",
"Microsoft.AspNetCore.StaticFiles": "1.0.0-*"
},
"tools": {
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.1.0-preview4-final",
"Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final",
"Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
"version": "1.1.0-preview4-final",
"imports": [
"portable-net45+win8"
]
}
},
"frameworks": {
"netcoreapp1.1": {
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.1.0"
}
},
"imports": [
"netcoreapp1.1",
"net451"
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
运行后(在终端中)$ dotnet restore我可以运行以下命令来生成基本控制器.
$ dotnet aspnet-codegenerator --project . controller -name SimpleController
这生成了一个空控制器SimpleController.cs,代码如下:(注意我的dotnet项目被调用ToolsAppDotNetCore)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
namespace ToolsAppDotNetCore
{
public class SimpleController : Controller
{
public IActionResult Index()
{
return View();
}
}
}
Run Code Online (Sandbox Code Playgroud)
Jps*_*psy 17
您必须安装dotnet-aspnet-codegenerator。
现在,这是全局完成的,而不是通过Nuget软件包完成的:
电源外壳:
dotnet tool install --global dotnet-aspnet-codegenerator
Run Code Online (Sandbox Code Playgroud)
然后,这就是在PowerShell中从现有EF模型创建REST-Controller的方式:
dotnet-aspnet-codegenerator -p "C:\MyProject\MyProject.csproj" controller -name MyDemoModelController -api -m My.Namespace.Models.MyDemoModel -dc MyDemoDbContext -outDir Controllers -namespace My.Namespace.Controllers
Run Code Online (Sandbox Code Playgroud)
显示可用的发电机(-p... -h):
dotnet-aspnet-codegenerator -p "C:\MyProject\MyProject.csproj" -h
Run Code Online (Sandbox Code Playgroud)
显示“控制器”生成器(-p... controller -h)的可用选项:
dotnet-aspnet-codegenerator -p "C:\MyProject\MyProject.csproj" controller -h
Run Code Online (Sandbox Code Playgroud)
这是从PowerShell中为给定路径中的所有模型生成REST控制器的方式:
Get-ChildItem "C:\MyProject\Models" -Filter *.cs |
Foreach-Object {
$scaffoldCmd =
'dotnet-aspnet-codegenerator ' +
'-p "C:\MyProject\MyProject.csproj" ' +
'controller ' +
'-name ' + $_.BaseName + 'Controller ' +
'-api ' +
'-m My.Namespace.Models.' + $_.BaseName + ' ' +
'-dc MyDemoDbContext ' +
'-outDir Controllers ' +
'-namespace My.Namespace.Controllers'
# List commands for testing:
$scaffoldCmd
# Excute commands (uncomment this line):
#iex $scaffoldCmd
}
Run Code Online (Sandbox Code Playgroud)
San*_*ket 11
如果您使用的是命令行,则可以使用Code Generator包获得脚手架功能.要使用它,首先需要在project.json中包含CodeGeneration包.
"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"
]
}
}
Run Code Online (Sandbox Code Playgroud)
现在您可以使用dotnet restore命令恢复包.完成后,您可以使用以下命令搭建控制器和视图 -
dotnet aspnet-codegenerator --project . controller -name HelloController -m Author -dc WebAPIDataContext
Run Code Online (Sandbox Code Playgroud)
上面的命令将在根目录中生成名为HelloController的控制器,并在Views文件夹下的Hello文件夹中查看CRUD选项.您可以--help在controller参数之后使用命令行开关来获取有关控制器生成器的更多选项.
| 归档时间: |
|
| 查看次数: |
15754 次 |
| 最近记录: |