ASP.NET MVC Tip #16 – 创建 ASP.NET MVC 宏操作
ASP.NET MVC Tip #16 – Create ASP.NET MVC Macros
美语原文:http://weblogs.asp.net/stephenwalther/archive/2008/07/09/asp-net-mvc-tip-16-create-asp-net-mvc-macros.aspx
国语翻译:http://www.cnblogs.com/mike108mvp
译者注:在下水平有限,翻译中若有错误或不妥之处,欢迎大家批评指正。谢谢。
在这篇帖子中,我将演示如何创建一个Visual Studio 2008宏操作(macro)来实现使用一个命令,就可以创建一个新的MVC控制器(controller),视图(View)文件夹,以及controller单元测试。
不要误会我。我喜欢Visual Studio 2008的设计工具。我喜欢从Visual Studio 2008的工具箱中拖放项目。我已经记住了很多Visual Studio的操作快捷键。但是,今天之后,没有什么比在命令窗口输入一个指令更快的操作了。
在这个帖子中,我将告诉你如何利用Visual Studio的宏操作和Visual Studio的命令窗口来生成文件和代码,用于ASP.NET MVC 项目中。特别是,我将告诉你如何创建一个宏来生成新的MVC controller、MVC view 和 MVC controller 单元测试。
创建Visual Studio 宏
你有两种方式来创建Visual Studio宏。第一种方式,当你在使用Visual Studio时,你可以录制你的动作。为了录制宏,你可以点击Tools菜单 -> 宏(Macros) -> 录制临时宏(Record TemporaryMacro)。这个宏工具的控制面板看起来就像录像机一样。当你录制结束后,你可以点击Stop按钮,然后你就有了一个新的宏,你可以把它保存下来,并在以后重新播放(replay)它。
另一种方式是从头开始写一个宏。我一般使用这种方式来创建MVC宏。我以前曾经被强迫只能使用这种方式来创建宏,因为我需要写通用的功能的宏,以便它能在任何的MVC项目中使用。
Visual Studio宏必须用VB.NET来编写。(译者注:真郁闷啊)。大多数的宏代码都包含了对Visual Studio的自动对象模型(Automation Object Model)的调用。我的MVC宏利用了下面的自动对象:
DTE - Visual Studio自动对象模型的最高层对象。该对象有一个代表你的Visual Studio解决方案(Solution)的Solution属性。你可以使用Solution属性与你的解决方案中的单独的工程(projects)进行联系。
Project - 代表一个在你的解决方案中的单独的工程,例如一个MVC工程或者一个测试工程。使用ProjectItems属性来与你的单独工程中的某些内容项(例如文件、文件夹)进行联系。
CodeModel - 代表一个工程(project)中的代码。你可以使用CodeModel来添加新的类到一个工程中。
要创建一个Visual Studio宏工程,你可以点击Tools菜单 -> 宏(Macros) -> New Macro Project。选择这个菜单就打开了一个创建新宏工程的对话框(见图1)。
Figure 1 – New Macro Project Dialog Box
在你创建了一个新的宏工程后,在地址中打开的宏浏览窗口(Macro Explorer window)通常会被解决方案窗口(Solution Explorer window)占据(见图2)。你可以在宏浏览窗口中双击任何宏来运行它。你也可以右键单击一个宏来编辑、修改它。
Figure 2 – Macro Explorer Window
当你编辑一个宏时,宏的集成开发环境(IDE)将会出现。宏IDE看起来就像另一个Visual Studio 2008实例。但是,它是一个功能更有限的开发环境专门为了开发宏而设计。
你通过编写VB.NET代码模块(module)来创建一堆宏。每个你定义在模块中的公共子程序(public subroutine)会暴露为一个单独的宏。例如,在代码清单1中的超级简单的宏代码只是显示一个“Hello World!”弹出对话框窗口。
Listing 1 – Test.vb
译者注:这个代码不好粘贴,请大家到原文查看代码:
http://weblogs.asp.net/stephenwalther/archive/2008/07/09/asp-net-mvc-tip-16-create-asp-net-mvc-macros.aspx
一个宏子程序(macro subroutine)能够接收参数。但是,所有的参数都是可选的参数(Optional parameters)- 使用VB的Optional关键字来定义。如果你没有让参数为可选,则这个子程序将不会出现在宏浏览窗口中。
执行Visual Studio宏
当你创建一个宏后,有几种方式来执行它:
· 从宏浏览窗口
· 从命令窗口
· 从查找输入框(Find input box)
执行一个宏最容易的方式是在宏浏览窗口中双击这个宏。然而,如果用这种方式的话,就失去这篇帖子的目标了。这篇帖子的目的是解释如何通过输入命令来快速修改一个ASP.NET MVC project。
第二种方式是从Command window执行一个宏。点击View菜单 -> Other Windows -> Command Window 来打开Command window。(更好的方式是用Ctl-Alt-A快捷键来打开Command window)。Command Window 打开后,输入Macros.Macro宏名字来打开宏。例如,你可以在Command window中输入Macros.MVC.Test.SayHello来执行我们上一节创建的宏。
Macros.MVC.Test.SayHello
当你输入一个宏名字时,将看到完整的宏名称自动填充(见图3)。因此你实际上只需要输入字母m,然后在自动出现的下拉列表中选择你要执行的宏。
Figure 3 – Command window statement completion
我从Sara Ford的博客中发现了最后一种执行宏的方法。
http://blogs.msdn.com/SaraFord/
你可以从Visual Studio工具栏的Find input box中执行一个宏(见图4)。输入 > 符号来选择一个宏来执行。你可以用 Ctl+/ 快捷键来快速导航到Find input box中。
Figure 4 – Executing a macro from the Find input box
创建宏别名
如果你想要减少执行一个宏时的输入字符数,那么你可以创建一个宏的别名。使用像下面这样的别名:
alias h Macros.MVC.Test.SayHello
当你在Command window中执行上面的命令后,你如果要执行SayHello 宏,那么只需要输入一个字母h即可。
你可以使用/delete删除一个别名:
Alias h /delete
通过使用别名,你可以输入最少的字符来执行通用的ASP.NET MVC任务。
创建一个ASP.NET MVC宏
MVC宏代码包含在代码清单2中。代码清单2中包含一个Generate代码模块,它包含了4个公共子程序(public subroutines),分别是All, Controller, View, 和 ControllerTest。
Listing 2 – Generate.vb
译者注:这个代码不好粘贴,请大家到原文查看代码:
http://weblogs.asp.net/stephenwalther/archive/2008/07/09/asp-net-mvc-tip-16-create-asp-net-mvc-macros.aspx
你能够在Command window或者Find input box中执行下面的代码来创建一个新的controller、view 文件夹、以及controller 测试工程。
Macros.MVC.Generate.All Product
执行这行命令将创建一个新的名为ProductController的controller,名为Product的View,一个Product的view文件夹,一个名为ProductControllerTests单元测试工程。
如果你想要减少执行这些命令的输入代码量,你可以创建一个像这样的宏别名:
alias gen Macros.MVC.Generate.All
这个命令创建了一个名为gen的别名,它代表了MVC.Generate.All宏。创建这个别名后,你可以像这样创建一个新的controller、view 文件夹、以及单元测试工程:
gen Customer
这很可能是创建一个MVC工程项目最快、最懒的终极必杀技。执行这个命令后,你的解决方案窗口将包含图5所示的文件。
Figure 5 -- Generating a Customer
总结
我这篇帖子的目的是要说明从Visual Studio中可以创建一些命令来快速生成ASP.NET MVC工程项目文件。通过很好地利用这个包含在Visual Studio 2008中的功能强大的自动化模型,你(理论上)能够创建ASP.NET MVC应用程序,而无需打开一个单独的创建新文件的
对话窗口。