Ruby on Railsでは、コマンドラインで次のようなものを使用してコントローラーを生成できます。
$
Rails generate controller ControllerName action1 action2
...etc
コントローラを生成するためのdotnetcore cliに類似したものはありますか?
私が見つけることができることから、dotnetcore cliはあなたができるコマンドがかなり制限されているようです。 Microsoftのドキュメントからcliの拡張について何かを見つけましたが、このようなコマンドでそれを行う方法については自信がありません。
更新:2019年1月29日
@ Jspyの答えは、2018年半ばからdotnetcore cmdを使用してコントローラーを生成する新しい方法です。@ Sanketの答えは、それを超えるまで受け入れられる答えのままです。
更新:2016年12月21日
@ 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.
この問題を解決するために、"net451"
のフレームワークインポートステートメントにnetcoreapp1.1
依存関係。
私のシンプルな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"
]
}
}
}
実行後(ターミナルで)$
dotnet restore
次のコマンドを実行して、基本的なコントローラーを生成できます。
$
dotnet aspnet-codegenerator --project . controller -name SimpleController
これにより、次のコードでemptyコントローラー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();
}
}
}
Dotnet-aspnet-codegeneratorをインストールする必要があります。
これは、Nugetパッケージを介してgloballyおよびnotになりました。
パワーシェル:
dotnet tool install --global dotnet-aspnet-codegenerator
次に、PowerShellの既存のEFモデルからRESTコントローラーを作成する方法を示します。
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
利用可能なジェネレーターを表示(-p... -h
):
dotnet-aspnet-codegenerator -p "C:\MyProject\MyProject.csproj" -h
「コントローラー」ジェネレーターの使用可能なオプションを表示(-p... controller -h
):
dotnet-aspnet-codegenerator -p "C:\MyProject\MyProject.csproj" controller -h
これは、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
}
コマンドラインを使用している場合、コードジェネレーターパッケージでスキャフォールド機能を取得できます。これを使用するには、最初にcodeGenerationパッケージを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
コマンドを使用してパッケージを復元できます。完了したら、次のコマンドを使用してコントローラーとビューを足場にすることができます。
dotnet aspnet-codegenerator --project . controller -name HelloController -m Author -dc WebAPIDataContext
上記のコマンドは、ルートディレクトリにHelloControllerという名前のコントローラーを生成し、Viewsフォルダーの下にあるHelloフォルダー内のCRUDオプションのビューを表示します。コントローラーパラメーターの後に--help
コマンドラインスイッチを使用して、コントローラージェネレーターに関するより多くのオプションを取得できます。