我有一个ASP.NET MVC 4项目,其中许多模型都是以自定义方式搭建的。我已经定制了模板来创建控制器并查看我希望它们的样子。一切正常。现在我编写了一个PowerShell脚本来为每个需要搭建的模型一次生成控制器和几个视图。这也很好。
然后我去寻找一个PowerShell脚本来在一个命令中构建多个模型,因为现在我必须为我拥有的每个模型手动运行脚本。我发现的第一件事就是在每一行上编写一个脚本来命名一个模型,这个模型工作正常,但在我看来仍然是太多的工作。经过一番深入的搜索后,我发现这可以通过一个脚本来完成,该脚本包含一个模板到scaffold的列表和一个遍历列表的foreach循环,然后对该列表中的每个项执行scaffold-command。这好多了!
我现在唯一要问的是:是否可以编写一些脚本来自动检测Model文件夹中的所有模型,将它们放入列表中然后执行循环。我问这个的原因是因为我没有几个型号,但大约有250个。这并不是我不想手动这样做,而是如果添加,更改或删除某些型号会怎样。
所以我的问题是:有没有办法'动态'从Model文件夹中获取所有模型并将它们放入将要迭代的列表中?
更新
这就是我的脚本“ScaffoldAll.ps1”现在的样子(并非所有250个型号都在列表中):
$models = "Team", "Player"
foreach($model in $models)
{
Scaffold CustomController $model -Force
}
我想要实现的目标(伪!):
$models = //All files in Model folder, like: Get-Files "\Models"
这可能吗?
答案 0 :(得分:2)
阿巴斯
我一直在使用MVCScaffolding模板(使用EF代码优先),其工作方式是创建域模型,然后搭建具有域模型的所有对象。该模板实际上将跳过已经存在脚手架的任何预先存在的控制器/视图的脚手架。但是,还有一个覆盖命令(-FORCE),如果您愿意,它将覆盖任何/所有预先存在的脚手架代码。
这是快速链接:
答案 1 :(得分:0)
@jim:你没有提供一个直接的回答(我没有要求),但你确实让我在路上非常感谢你。我去研究模板,通过研究这些模板,我找到了一个从Model文件夹中获取模型的解决方案。它可能不是一个完美的解决方案,但这很有效:
$modelFolder = Get-ProjectFolder "Models\"
foreach($file in $modelFolder)
{
$model = $file.Name.Replace(".cs", "")
Scaffold CustomController $model -Force
}