一會用IDE,一會不用IDE,我可真煩人......
And,繼續標題黨下去吧...... 我對拖控制項這種標題黨方式很有愛。
言歸正傳,搞過一回命令列編譯C#,這回咱們回來玩玩IDE,這一篇主要向大家講一下VS項目的可定製能力,它並非是微軟創造出來的一個專門給.net和Win32編程新手用的玩物,而是一個真正非常優秀的可擴充的IDE產品。你可以用它來管理項目和項目依賴關係,可以跟源碼管理工具整合,編譯執行也不限於微軟內建的集中開發語言,你甚至可以用它來開發Java。
這篇文章將會通過一個簡單例子,來示範如何用VS來編譯ilasm,這個應該也還是有些實際用處的,也方便喜歡研究ilasm的朋友。
首先第一步,我們建立一個C++空項目(沒錯,是C++空項目,對VS而言,VC++是一種自訂項目,它最接近我們的需求)。
接下來我們右鍵點這個建立的項目,選擇“工具產生順序”,然後把那一堆C++工具全都選掉,只留下自訂產生工具就行了。
好 這樣我們的項目就編譯不了C++了。
接下來是重點,重新在VS中開啟專案檔,然後右鍵點擊“自訂建置規則”
然後我們建立一個規則檔案,用來編譯il檔案。
建立一個規則檔案之後建立規則,到這都很容易,就不用細說了。
建立規則稍微有些複雜了,首先我們來參考一下ILASM的文檔:http://msdn.microsoft.com/zh-cn/library/496e4ekx(VS.80).aspx
我這裡只是為了示範,沒有把太多的ilasm編譯選項做成屬性
填好後一路確定就行了。可以在項目中改變自訂屬性來切換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
}
附上整個項目壓縮包:
/Files/winter-cn/ilasm.rar