2014年10月14日星期二

開發VisualStudio擴充功能建構自己的開發環境(二)

VisualStudio中內建了非常多的範本,可以很快的加入專案中,並進行開發的動作,可是大部分的範本都是基礎的架構內容,因此如果需要開發新功能時,我認為在大部分的情況中,程式設計師還是會選擇在專案尋找類似的程式碼檔案,然後直接複製一份進行修改的動作.

這樣的作業模式的確可以加速程式的開發,不過我常常發現在這樣的動作背後,其實很容易忽略程式碼需要進行調整的地方,往往在建置或測試過程中,需要花費更多的時間來處理沒有修改到的部份,因此似乎沒有真的省到多少的時間.

針對這個問題,我們選擇透過建立專屬的範本(如下圖)來強化開發作業.這些範本主要整理了後端平台上常用的基本頁面或自定控制項架構,當項目一被建立後,畫面UI或基本程式碼都已經配置好了,程式設計師只要針對新功能所需的部分進行開發.



在每一個範本中,可能會有一些固定的內容需要進行調整,我們也開發了一個簡單的精靈(如下圖),讓新增的項目在建立時,就可以針對這些文字或是程式碼中使用的類別進行設定.


對每一個程式設計師來說,當作業系統重灌後,要重新配置好開發環境是一個耗費時間的作業.哪些元件或擴充套件需要安裝,都需要一步一步的重新來過,幸好VisualStudio內建的擴充套件管理員,可以很快的搜尋與安裝.

因此我們也配置了自定的Extension Gallery,可以更快進行重新安裝或是更新(如下圖).



共用元件的安裝,則是透過自定NuGet Package的方式來處理.



我想這兩篇文章並非什麼技術教學文章,而是希望分享自己的一些思維與做法,讓更多人知道,其實可以好好利用VisualStudio的擴充性來加速開發程式的速度,也可以讓開發的過程更輕鬆.

前篇:開發VisualStudio擴充功能建構自己的開發環境(一)

2014年10月13日星期一

開發VisualStudio擴充功能建構自己的開發環境(一)

一路從ASP寫到ASP.NET,所使用的開發工具也由UltraEdit到VisualStudio,一直覺得開發工具的演進實在是大大的幫助開發的速度與便利性.

在僅有文字編輯器的時代,程式碼需要一個一個字母的輸入,雖然可以讓程式設計師好好的練習程式語言的所有寫法,但也使得程式開發的速度無法有效的提升.

到了VisualStudio的時代,開發工具上各式各樣的輔助功能不斷的出現,讓程式設計師可以把焦點專注在要解決的問題上,而不用在瑣碎的問題上花費大量時間,確實而且準確的將程式開發往前推了一大步.

現在,程式設計師可以很容易的利用各式各樣的Framework與開發工具開發出所需的功能,但這是否就表示已經足夠了呢?每一位程式設計師或團隊一定都有獨特的開發架構或模式,開發工具通常僅能滿足大部份的基礎需求,並不容易可以滿足這些獨特的要求.

在這裡我不得不讚揚一下VisualStudio實在是一個非常好的開發工具,不僅功能齊全,而且更有非常大的擴充性.擴充套件的發展更打開了新的一扇窗,各式各樣的擴充套件一直被開發出來,也更讓身為程式設計師的我,容易根據需要來調整開發環境.

回到主題,一直以來想要開發一個後端平台(ASP.NET)可以很容易將新開發功能佈署上去,雖然WebDeploy可以滿足這個要求,但每一次卻都要將全部的程式碼重新打包一次,對我而言並非是個好的解決方式.後來發現SharePoint對於附加的功能可以透過所謂的WSP(Package)的方式進行佈署,因此也興起了想要將這樣的概念實做在自己的平台中.

後端平台基礎功能介紹:

1. 帳號、群組與選單權限的管理
2. 系統設定值設定、資料庫結構敘述與檔案系統檢視
3. 功能佈署管理


上方圖片是功能佈署管理的操作畫面,功能是可透過上傳壓縮檔案方式直接進行程式檔案或是SQL Script的佈署.上傳的壓縮檔內必須包含一個特定的XML描述檔,來記錄或處理有哪些檔案需要進行作業.

到了這個階段,我一直在思考該如何來實現這個XML檔案的編輯與檔案壓縮的作業,總不可能直接就使用文字編輯器的方式進行編輯然後手動壓縮,這樣作業上不但不方便而且造成錯誤的機率實在太高.如果寫一個專門用來處理此作業的應用程式也無法與VisualStudio進行整合,將使作業程序整個拉長許多.

經過考量後,發現如果能透過撰寫VisualStudio的擴充套件來完成此作業,將是最完美的解決方式.

包裝檔擴充套件包含了下述的功能:

1. 選取專案內的組件或檔案加入XML結構敘述
2. 專案建置時,可直接針對XML結構敘述產生對應的壓縮檔



開發這個擴充套件除了要了解VisualStudio SDK外,為了在專案建置時產生壓縮檔,所以也需要一併了解MSBuild才有辦法可以達到此需求.

在這個後端平台上,系統選單是由資料庫內所設定的資料來產生,當新功能要佈署也需要一併將需要的資料寫入資料庫中,因此也做了與專案佈署類似的套件.

選單設定擴充套件包含了下述的功能:

1. 將新增或編輯要的選單加入XML結構描述
2. 根據XML結構描述,產生對應的SQL Script



這個套件與專案佈署比較不一樣的地方在於,XML檔案編輯完成後,還需要透過Text Template讀取XML內容並產生對應的SQL Script.

另外,包裝檔建置完成後,產生的檔案需要到後端平台進行上傳才能完成佈署,在作業上仍然有可以加強的地方,因此也希望可以直接在VisualStudio進行處理.

包裝檔佈署擴充套件包含了下述的功能:

1. 選擇要佈署的包裝檔,直接佈署至選擇的後端平台.


佈署的作業主要是依靠在後端平台上建置一個WCF的Service來處理,VisualStudio這端只要根據方案內有哪些專案是可允許佈署,並找到佈署的包裝檔案即可完成.


透過上述自行開發的套件,可以讓開發人員有效率的處理非程式上的需求,也可以讓整個開發到佈署的流程更加順暢.

後篇:開發VisualStudio擴充功能建構自己的開發環境(二)

2014年8月15日星期五

GridViewScroll with jQuery vNext

我們正在開發新版的GridViewScroll with jQuery,希望在新版可以支援更多人的需求與功能.

目前我們在GitHub上也已經放上了新版的一些資訊,也希望可以大家一起透過GitHub給我
們建議或是任何想法!

如果你有興趣可以前往以下網址:

GridViewScroll with jQuery on GitHub Pages 或 GridViewScroll with jQuery on GitHub