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應用程式,而無需開啟一個單獨的建立新檔案的
交談視窗。