Visual Studio你不能只是用來(lái)拖拖控件
言歸正傳,搞過(guò)一回命令行編譯C#,這回咱們回來(lái)玩玩IDE,這一篇主要向大家講一下VS項(xiàng)目的可定制能力,它并非是微軟創(chuàng)造出來(lái)的一個(gè)專門給.NET和Win32編程新手用的玩物,而是一個(gè)真正非常優(yōu)秀的可擴(kuò)展的IDE產(chǎn)品。你可以用它來(lái)管理項(xiàng)目和項(xiàng)目依賴關(guān)系,可以跟源碼管理工具集成,編譯執(zhí)行也不限于微軟內(nèi)置的集中開(kāi)發(fā)語(yǔ)言,你甚至可以用它來(lái)開(kāi)發(fā)Java。
這篇文章將會(huì)通過(guò)一個(gè)簡(jiǎn)單例子,來(lái)演示如何用VS來(lái)編譯ilasm,這個(gè)應(yīng)該也還是有些實(shí)際用處的,也方便喜歡研究ilasm的朋友。
首先第一步,我們建立一個(gè)C++空項(xiàng)目(沒(méi)錯(cuò),是C++空項(xiàng)目,對(duì)VS而言,VC++是一種自定義項(xiàng)目,它最接近我們的需求)。
接下來(lái)我們右鍵點(diǎn)這個(gè)新建的項(xiàng)目,選擇“工具生成順序”,然后把那一堆C++工具全都選掉,只留下自定義生成工具就行了。
好 這樣我們的項(xiàng)目就編譯不了C++了。
接下來(lái)是重點(diǎn),重新在VS中打開(kāi)項(xiàng)目文件,然后右鍵點(diǎn)擊“自定義生成規(guī)則”
然后我們新建一個(gè)規(guī)則文件,用來(lái)編譯il文件。
新建一個(gè)規(guī)則文件之后新建規(guī)則,到這都很容易,就不用細(xì)說(shuō)了。
新建規(guī)則稍微有些復(fù)雜了,首先我們來(lái)參考一下ILASM的文檔:http://msdn.microsoft.com/zh-cn/library/496e4ekx(VS.80).aspx
我這里只是為了演示,沒(méi)有把太多的ilasm編譯選項(xiàng)做成屬性
填好后一路確定就行了??梢栽陧?xiàng)目中改變自定義屬性來(lái)切換exe和dll:
附上MSIL的helloworld以供大家驗(yàn)證:
- // 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
- }
附上整個(gè)項(xiàng)目壓縮包:
http://files.cnblogs.com/winter-cn/ilasm.rar
原文標(biāo)題:Visual Studio,不只是用來(lái)拖拖控件
鏈接:http://www.cnblogs.com/winter-cn/archive/2010/07/07/1772567.html
【編輯推薦】