2019年12月20日 星期五

SharpDevelop IDE 系列研究 (1) - 談論目的、編譯 SharpDevelop 模組

有關 IDE,JetBrains IntelliJ, Eclipse, Net Beans, VSCode, Visual Studio...etc 都是很強大的編輯器,都是為開發人員而生的 IDE,但是否有其他情境,會需要很特殊的整合開發環境出現?

有的,舉個例子,開發 Cortex ARM 系列、FPGA 系統雛型晶片的工程師們,也許會接觸過 Keil C,再更進階一點,電子電路相關領域的專業人員,會需要一個分析或是 Pattern 的軟體。

National Instrument - Digital Pattern Editor

上面介紹的這個 NI - Digital Pattern Editor 這套軟體,就是為晶片測試領域的專業人員而開發的,它的確也以視覺化形式的 IDE 呈現。

所以,究竟為什麼要來探討 SharpDevelop,為什麼要學它來開發 IDE ? 有什麼好處 ?

首先, SharpDevelop 早就在 2015 後沒有繼續更新了,框架版本維持在 4.5 ,而且是使用 C# + WPF ,這就足以打擊很多的開發者願意繼續貢獻這套軟體,再來是,它是 32bit 的軟體,並不對 64bit 軟體繼續支援 (即便網友正在實驗,也不見得是明朗的結果)。

要深入研究這套 IDE,會探索到 Language Binding 的部分,我們可以從探索面切入去了解一個 IDE 形式的軟體,檔案樹、專案檔、格式、語言特有編譯、語言特有副檔名是怎麼製作出來的。

為了整合整套應用程式變成 IDE ,還有那些可以分開頁籤功能的 Avalon Dock ,深入研究 IDE 運作及整個邏輯,打造成下面軟體的樣子,大概就是粗糙看用的工業風 IDE 吧。

經過我數週時間優化界面的 Sharpdevelop

Menu 也經過大幅調整,變得比較大氣:


專案 Tab 也加上有 Hover 效果的 Close(原本沒有 close):


以上是我在 ITRI 服務期間選擇使用的技術,為了不透露細節,對畫面截圖打碼,並且往後的文章中並不會介紹怎麼把樣式改成那樣,這只是 show off ,希望你不會因為原本的介面太 Low 就打退了研究【古老技術殿堂】的機會。

好,到底為什麼要選擇這項技術,是因為需要整併舊有的 Windows C# Form 所製作的 IDE,由於結構龐大,許多 Project Setting, Project Tree 並沒有寫好,我們需要一個有 Project Tree 方便管理的框架,同時又要能支援 C++ Interop 硬體溝通的情境,故選擇 Sharopdevelop。

其實在選擇 SharpDevelop 之前,我嘗試編譯 MonoDevelop 好幾個禮拜,但是一直都失敗,它現在只在 OS X 上面可以編譯罷了,這明顯就是要我多一道工去修改 SharpDevelop。

所以,準備好的話,就開始了!

目的


這個系列研究的目的,是希望製作自己的 AddIns ,包含開專案、自定專案檔、Language Binding、開特定副檔、編譯事件,而且還要能打開自定的 Windows Form 或是 WPF ,其中 Forms, WPF 都可以相容被開啟。


Raw 專案: 編譯順序、修改專案


這塊就很經驗談,因為 SharpDevelop 有編譯順序的問題,甚至還得調整專案的 Properties,所以在這個小節會帶你編譯完到可以開啟 SharpDevelop。


第一動: 下載 Sharpdevelop 專案回來 (下載 release 5.0 的): 

開啟專案,會告訴你有一個專案 Unsupport,但不用管它。


然後是專案的 .NET Framework 版本,建議 4.5 以上要自己慢慢測,雖然可以用很多新的 Nuget 套件,但是穩定度不曉得,建議從 4.5 慢慢往上升,我以下用 4.6.1 也是正常的。


之後,要把 SharpDevelop 設定成主專案:


編譯順序是
  1.  AddIns 底下,除了 Analysis 以外,其他 AddIns 多選,右鍵 Build
  2. 編譯所有 Libraries 的東西
  3. 編譯 SharpDevelop 本身
  4. 編譯 Core, Presesntation, WinForms, Develop
  5. 多選 Analysis 除了 Profiler 以外的專案編譯
  6. 編譯 Profiler 底下的東西,一個一個編譯
  7. 視情況看看 Build Worker 那堆能不能編譯,跳錯也沒差


編譯好了之後,按下 Start 就可以開啟了:



如果你要升級 .Net 版本,建議一個一個專案開起來改。

附帶一提


SharpDevelop AddIns 其實是用 SharpDevelop 自己開發的,也就是自己編譯自己 (X,應該說是自己的 IDE 寫出自己 IDE 的 AddIns 以及也可以用來編譯自己。

但是我傾向使用 Visual Studio 開發,而且我執行最上述專案的期間,也擔心同事、Team  之間需要腦袋切換太麻煩,我自幹了一系列的 Visual Studio Project Template, Items ,那樣就只要在 Visual Studio 處理完所有工作就好了。

沒有留言:

張貼留言

© Mac Taylor, 歡迎自由轉貼。
Background Email Pattern by Toby Elliott
Since 2014