Visual Studio不僅是讓你用來拖拖控件

言歸正傳,搞過一回命令行編譯C#,這回我們回來玩玩IDE,這一篇主要向你們講一下VS項目的可定製能力,它並不是是微軟創造出來的一個專門給.NET和Win32編程新手用的玩物,而是一個真正很是優秀的可擴展的IDE產品。你能夠用它來管理項目和項目依賴關係,能夠跟源碼管理工具集成,編譯執行也不限於微軟內置的集中開發語言,你甚至能夠用它來開發Java。 html

這篇文章將會經過一個簡單例子,來演示如何用VS來編譯ilasm,這個應該也仍是有些實際用處的,也方便喜歡研究ilasm的朋友。 編程

首先第一步,咱們創建一個C++空項目(沒錯,是C++空項目,對VS而言,VC++是一種自定義項目,它最接近咱們的需求)。 工具

接下來咱們右鍵點這個新建的項目,選擇「工具生成順序」,而後把那一堆C++工具全都選掉,只留下自定義生成工具就好了。 spa

好 這樣咱們的項目就編譯不了C++了。 命令行

接下來是重點,從新在VS中打開項目文件,而後右鍵點擊「自定義生成規則」 code

而後咱們新建一個規則文件,用來編譯il文件。 htm

新建一個規則文件以後新建規則,到這都很容易,就不用細說了。 blog


新建規則稍微有些複雜了,首先咱們來參考一下ILASM的文檔:http://msdn.microsoft.com/zh-cn/library/496e4ekx(VS.80).aspx ci

我這裏只是爲了演示,沒有把太多的ilasm編譯選項作成屬性 開發


填好後一路肯定就好了。能夠在項目中改變自定義屬性來切換exe和dll:


附上MSIL的helloworld以供你們驗證:

 
  1. // HelloWorld.il  
  2. // This is our first IL program!  
  3.  
  4. .assembly extern mscorlib {  
  5. }  
  6. .assembly HelloWorld {  
  7.   .ver 1:0:1:0  
  8. }  
  9. .module HelloWorld.exe  
  10.  
  11. .method privatescope static void Main() cil managed {  
  12.   .maxstack 1  
  13.   .entrypoint  
  14.     
  15.   ldstr  "Hello World" 
  16.   call  void [mscorlib]System.Console::WriteLine(string)  
  17.   ret  

附上整個項目壓縮包:

http://files.cnblogs.com/winter-cn/ilasm.rar

相關文章
相關標籤/搜索