Visual Studio你不能只是用來拖拖控件
言歸正傳,搞過一回命令行編譯C#,這回咱們回來玩玩IDE,這一篇主要向大家講一下VS項目的可定制能力,它并非是微軟創(chuàng)造出來的一個專門給.NET和Win32編程新手用的玩物,而是一個真正非常優(yōu)秀的可擴展的IDE產品。你可以用它來管理項目和項目依賴關系,可以跟源碼管理工具集成,編譯執(zhí)行也不限于微軟內置的集中開發(fā)語言,你甚至可以用它來開發(fā)Java。
這篇文章將會通過一個簡單例子,來演示如何用VS來編譯ilasm,這個應該也還是有些實際用處的,也方便喜歡研究ilasm的朋友。
首先第一步,我們建立一個C++空項目(沒錯,是C++空項目,對VS而言,VC++是一種自定義項目,它最接近我們的需求)。
接下來我們右鍵點這個新建的項目,選擇“工具生成順序”,然后把那一堆C++工具全都選掉,只留下自定義生成工具就行了。
好 這樣我們的項目就編譯不了C++了。
接下來是重點,重新在VS中打開項目文件,然后右鍵點擊“自定義生成規(guī)則”
然后我們新建一個規(guī)則文件,用來編譯il文件。
新建一個規(guī)則文件之后新建規(guī)則,到這都很容易,就不用細說了。
新建規(guī)則稍微有些復雜了,首先我們來參考一下ILASM的文檔:http://msdn.microsoft.com/zh-cn/library/496e4ekx(VS.80).aspx
我這里只是為了演示,沒有把太多的ilasm編譯選項做成屬性
填好后一路確定就行了??梢栽陧椖恐懈淖冏远x屬性來切換exe和dll:
附上MSIL的helloworld以供大家驗證:
- // HelloWorld.il
- // This is our first IL program!
- .assembly extern mscorlib {
- }
- .assembly HelloWorld {
- .ver 1:0:1:0
- }
- .module HelloWorld.exe
- .method privatescope static void Main() cil managed {
- .maxstack 1
- .entrypoint
- ldstr "Hello World"
- call void [mscorlib]System.Console::WriteLine(string)
- ret
- }
附上整個項目壓縮包:
http://files.cnblogs.com/winter-cn/ilasm.rar
原文標題:Visual Studio,不只是用來拖拖控件
鏈接:http://www.cnblogs.com/winter-cn/archive/2010/07/07/1772567.html
【編輯推薦】