2015年2月4日 星期三

部署功能與Team Foundation Server整合

在前幾篇中的說明,我們已經可以很容易將開發完成的程式包裝為壓縮檔(WebFeature),並直接使用上傳或WCF服務方式來進行部署的作業.不過如果當需要部署的檔案或網站太多還是使得整個程序有點繁複.

因此我們整合了Team Foundation Server,透過客製化TFS建置程序來進行部署的作業.下圖則為功能的架構:



Deployment Center
用來預先定義所需的基本設定(TFS伺服器,組建定義,功能定義)的網站,並包含了一個用來接收部署功能結果的WCF服務.當需要進行部署時,也是由這個網站來執行.

Team Foundation Server
設定組建定義,並透過客製化的Process Template來處理部署服務.


Target Web Site
部署的目標網站,包含了一個用來接收部署壓縮檔的WCF服務,來進行檔案的部署動作.

整個流程順序如上圖所示,在Deployment Center中直接建立部署需求傳送給TFS,TFS將根據所需的組建定義來進行建置作業,並在建置的過程中,依照需求中的檔案與網站來進行部署作業,並在部署過程中傳送佈署結果回Deployment Center.


Deployment Center基本上也是一個可以透過上述部署作業的網站平台,僅是多增加了一個接收部署結果的服務,基本的操作畫面如下:

1. 設定所需的Team Foundation Server


2. 設定需要部署的目標網站


3. 設定TFS中的組建定義


4. 設定可部署功能項目並設定所在的組建定義


5. 部署功能項目基本資料


6. 部署功能預設的目標網站


7. 部署功能的紀錄


在Deployment Center中,可直接選擇功能與目標網站進行快速部署:



當部署完成後,我們可以在網站中查詢相關的紀錄,也可以直接從TFS的建置紀錄中看到結果:

2014年11月11日 星期二

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

完成了佈署機制時,我發現了一個很現實的問題,當我把壓縮檔案佈署到測試環境時如果發生了錯誤,我必須要手動的方式附加IIS處理序,才有辦法進行程式碼的偵錯.

這對我來說實在是一個很麻煩的步驟,開發一個功能可能就要重複很多次這樣的動作,對整體的開發經驗來說非常的不便.

當時我正準備要開發一個Project SubType,我發現其實可以透過它來自定專案偵錯的方式.因此也解決了這個煩人的問題.

當你按下F5進行偵錯時,Visual Studio其實做了Build -> Deploy -> Debug這三個動作,因此可以在自行定義的Project SubType中,提供自己想要的處理方式.例如:Windows Forms就會執行編譯好的執行檔來偵錯,而Web專案就會啟動一個瀏覽器的執行緒,這都是透過不同的Project SubType來負責導引.

透過自定Project SubType就可以做到像下圖一樣的設定

1. 設定按下F5後的相關動作(Build, Deploy, Debug)
2. 自定專案的屬性頁面
3. 變更在方案總管中的項目圖示
4. 設定選擇專案時,屬性視窗中要選擇的項目



相關文章:
開發VisualStudio擴充功能建構自己的開發環境(一)
開發VisualStudio擴充功能建構自己的開發環境(二)


2014年10月14日 星期二

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

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

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

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



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


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

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



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



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

相關文章:
開發VisualStudio擴充功能建構自己的開發環境(一)
開發VisualStudio擴充功能建構自己的開發環境(三)