怎样才能从powershell.exe中获取t4脚手架?

时间:2012-01-28 22:38:21

标签: asp.net-mvc-3 powershell powershell-v2.0

NuGet的PM控制台很棒,除了你必须在Visual Studio中使用它。我之前没有问过这个问题,我发现很难相信没有关于这个主题的文档。

我有两个用户:用户A卖鞋,用户B卖车。每个都有不同的财产需求。 如果我允许他们在各自的Product.cs实体中写入所需的属性/数据类型,我该如何使用PowerShell.exe:

支持控制器,视图,dbcontext和存储库?

我知道我之后可以做一个MSBuild,但是怎么没有办法使用PowerShell来说一个bat文件在VS 2010之外做脚手架?

任何见解都将受到赞赏。

2 个答案:

答案 0 :(得分:2)

经过几天的运气,我终于想到了这一点。首先,不要使用任何Microsoft beta,包括Windows 8 Developer Edition,PowerShell 3.0和VS 2011.一旦PowerShell 2.0启动并运行:

<强> 1。在PS / v1.0文件夹中添加一个powershell.exe.config文件:

请按照此链接添加脚本:http://connect.microsoft.com/PowerShell/feedback/details/525435/net-4-0-assemblies-and-powershell-v2

重新启动PowerShell 2.0,现在它将支持4.0框架。

<强> 2。将执行策略设置为仅要求远程脚本进行签名:

命令行:Set-ExecutionPolicy RemoteSigned

第3。导入所需的Custom t4脚手架(这样您就可以使用T4脚手架):

命令行:import-module C:\ Users \ Admin \ Documents \“Visual Studio 2010”\ Projects \ MvcApplication1 \ packages \ T4Scaffolding.1.0.5 \ tools \ T4Scaffolding.NuGetServices.dll

命令行:import-module C:\ Users \ Admin \ Documents \“Visual Studio 2010”\ Projects \ MvcApplication1 \ packages \ T4Scaffolding.1.0.5 \ tools \ T4Scaffolding.dll

<强> 4。现在调用您的powershell文件:

命令行:C:\ Users \ Admin \ Documents \“Visual Studio 2010”\ Projects \ MvcApplication1 \ MvcApplication1 \ CodeTemplates \ Scaffolders \ StevceScaffolders.AjaxGrid \ StevceScaffolders.AjaxGrid.ps1

(请务必引用任何包含空格的文件夹,例如“Visual Studio 2010”

我当然认为如果MS在他们的文档中提供了一些相关信息会更好。

答案 1 :(得分:0)

试图从powershell运行它时,你处于难以控制的境地,但可以想象。

我认为T4模板是由外部工具呈现的。我看不出为什么你不能从powershell调用那个EXE,在t4模板的命令行上传递参数来调用。生成的文件(或文件,请参阅实体框架T4如何编写多个文件的示例)将在完成后由t4转换工具输出。

您的各种不同文件类型将由不同的t4模板处理,即Controller.t4,Views.t4,Dbcontext.t4和respositories.t4。

希望有所帮助