2007年10月11日 星期四

如何把 IronPython 整合到 Visual Studio

這篇文章,翻譯來自於 Aaron Marten 的 blog,文章標題是 A bit more on IronPython。我在徵求了 Aaron 的同意以後,翻譯成中文,並依對於 Aaron 的承諾,附上原始出處。

要怎麼把 IronPython 整合到 Visual Studio 2005?

首先,你要去下載這個最新的 Visual Studio SDK(Version 4.0),這邊要注意的是,這個 IronPythonIntegration 的範例,只能用在 Visual Studio 2005 (或是更新的版本)如果你的機器裝的是 .Net 1.1 跟 Visual Studio 2003 的話,那就沒辦法用啦。

我要用什麼版本的 Visual Studio?我可以把他用在 Express 版本上嗎?

很遺憾,不可以。 Visual Studio Express 不支援擴充能力,這是 Express 版本的限制,不是這個範例的問題。你需要標準版或是更高階的版本才能使用這個範例。

另外,你也需要安裝 Visual C++ 來編譯這個範例(所以如果你的 Visual Studio 只有裝 VB 的話,那一樣沒辦法安裝這個範例)。目前所有的 Visual Studio 擴充專案都有這個限制,因為我們需要 C++ 的 preprocessor 去編譯這些範例裡面的 CTC 檔案。(CTC是用來描寫整合到 Visual Studio 時 menu 的結構)

好啦,我已經下載好那些東西啦,那我現在要怎麼讓 IronPython 在我的 Visual Studio 裡面可以動?

打開你的 Visual Studio 2005 (而且你的 SDK 以已經裝在預設的位置),開啟下面這個方案(solution)"C:\Program Files\Visual Studio 2005 SDK\2007.02\VisualStudioIntegration\Samples\IronPythonIntegration"。接著很簡單,你只要按下 Ctrl+F5 去建置你的專案就可以了。建置完成以後,他會自動以「實驗蜂槽模式(Experimental hive)」開啟一個 Visual Studio,裡面就有已經整合好的 IronPython 擴充功能。(另外一種開啟實驗模式的方法是以命令列執行"devenv /rootsuffix Exp")

這邊注意一下阿,如果你直接按 F5(而不是Ctrl+F5)執行的話,你的電腦可能會給你一些 exception 或是 MDA(managed debugging assistant) 錯誤訊息,不過那都不重要,你可以不用管他。

恩,我覺得我已經成功的建制並且執行了,阿現在勒?

那你現在可以用「建立新專案」功能,建立一個新的 IronPython 專案,就像是你建立一個新的 C#/VB/J#/C++ 專案一樣。我建議你一開始應該先開一個 console 專案玩一玩。如果你開一個新檔案,是用 .py 當作副檔名結尾的話,你會發現 Visual Studio 很聰明的會幫你加上 syntax coloring。

另外這個範例有一個很酷的小東西,就是一個叫做 IronPython Console Window 的小工具視窗,你可以從「檢視-其他視窗」來開啟他。這個小工具視窗的功能就是一個互動式的 IroonPython 環境,讓你可以快速的測試你的語法。

關於這個小視窗,還有一件事情要附註一下,就是裡面有個變數叫做 dte,有這個 dte 你可以透過 Macros IDE 自動化操作 Visual Studio(automate Visual Studio),也就是說:你可以用 IronPython 來寫 VS 的 mini-macros,而不必再用 VB 啦!

為什麼我可以編譯?我以前根本就不能編譯任何的 IronPython 程式碼阿?

在過去幾個月裡面,IronPython 團隊加了一些編譯器介面到 IronPython.dll 裡面,所以透過這個 .dll 我們可以編譯 IronPython 程式碼。有一個必須的認知是:這個編譯器編譯出來的程式碼,必須要仰賴這個 IronPython runtime 才能夠執行,也就是說你需要有這個 IronPython.dll 檔案才可以。畢竟這是一個動態的語言,所以當你執行你的 IronPython 程式的話,每一行程式碼都需要被重新檢查型態跟評估其值。

這代表著,你在 IronPython 寫的程式碼,所產生的 MSIL 不會像是你在 C#/VB 所寫的那樣。事實上,你應該沒辦法在其他語言完整的使用以 IronPython 開發出來的功能。

還有什麼特色阿?

一個「範例」就是一個「範例」,也就是說,這只是一個用來示範怎麼把 IronPython 整合到 Visual Studio 2005 的「範例」,所以呢,很多功能並沒有被實做出來,或是即使實做出來了,也不太穩定。雖然如此,這個範例還是很有限度的支援了以下個功能:
  • MSBuild
  • Windows Forms Designer(可以讓你建立視窗程式)
  • WebSite Projects
  • Web Application Projects
  • Intellisense(程式碼自動完成的功能)
  • Demonstrates use of MPF feature

我有好幾個 module(.py檔案) 要彼此互動,那我要怎麼作?

很簡單,把你的檔案都放在一起就好了。比方說,我有一個主程式檔叫做 program.py,然後我有要用到 myModule.py,那我就把 myModule.py 放到跟 program.py 同一個目錄下,然後在我的 program.py 加入一行:
import myModule

這個範例裡面包的是什麼版本的 IronPython?

Visual Studio 2005 SDK 裡面放的是 IronPython1.1 的 pre-beta 版本。

有沒有不用下載 Visual Studio2005 DSK 就可以用 Visual Studio 跑 IronPython 的方法阿?

到目前為止,我們唯一釋出這個 IronPython 整合範例的方法就是透過 VSSDK。

但是呢,IronPython 團隊已經釋出了一個 IronPython for ASP.NET CTP 的東西,包含了這個範例的部份功能。不一樣的是,這個 ASP.NET CTP 只以 binary 的形式釋出,然後他不需要 Visual Studio SDK。

恩,我覺得我發現了 bug 耶……

如果你有任何困難,問題,或是建議,拜託請回報給我們

沒有留言:

張貼留言