YOU ARE DOWNLOADING DOCUMENT

Please tick the box to continue:

Transcript
Page 1: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

Gelis Wu

團隊開發永遠的痛 - 談導入團隊開發的共同規範

台灣微軟Study4.TW

Page 2: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

• 熱衷於 OOA/OOD/OOP 與 UML 塑模化應用程式設計、軟體工程相關應用• 喜歡程式設計、擅長 ASP.NET Web Form, MVC,

WCF, Windows Form/WPF/WCF 開發、也實作過一些專案• 善於 Trouble-shooting 程式設計的各種疑難問題

吳俊毅 Gelis集英信誠

關於我

Page 3: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

• Visual Studio 2017 有哪些新功能?• 團隊開發永遠的痛 – 談團隊開發的困難點?• 你還在等 Visual Studio 裡,會有適合 ( 你/團隊 ) 使用的樣板嗎?• 關於 Visual Studio Extensibility SDK for 2017• Project Template 與 IWizard 的關係是什麼?• 使用 Visual Studio 2017 Extensibility SDK 建立 C#

Project Template• 何時該使用 Project Template ?何時用 NuGet ?• Project Template 成品演示• 如何偵錯 Project Template 或 範本精靈?

Agenda

Page 4: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

話說 IDE 工具進步飛快, Visual Studio 都前進到 2017 惹…

Page 5: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)
Page 6: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)
Page 7: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)
Page 8: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

結論?

Page 9: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

其軟體開發的問題一直都不在於技術的不斷地推陳出新,而在於你的做事方法有沒有想要推陳出新。

Page 10: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

事情永遠有更好的方法。

Page 11: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

Visual Studio 2017 有哪些新功能?

Page 12: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

• 全新設計的安裝程式,安裝更快速更容易選取安裝所需的功能Visual Studio 2017 有哪些新功能?

Page 13: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

• 全新設計的安裝程式,安裝更快速更容易選取安裝所需的功能• 最佳化,減少啟動時間和解決方案載入時間速度加快至少

50%

Visual Studio 2017 有哪些新功能?

Page 14: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

• 全新設計的安裝程式,安裝更快速更容易選取安裝所需的功能• 最佳化,減少啟動時間和解決方案載入時間速度加快至少

50%• IDE 中的通知列,提供延伸模組執行效能不佳的警示

Visual Studio 2017 有哪些新功能?

Page 15: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

• 全新設計的安裝程式,安裝更快速更容易選取安裝所需的功能• 最佳化,減少啟動時間和解決方案載入時間速度加快至少

50%• IDE 中的通知列,提供延伸模組執行效能不佳的警示• 程式碼 ( 編輯器 / 建議 ) 增強

• 以前需安裝 Indent Guides 、 Productivity Power Tools 、 ReSharper… 才有的功能

Visual Studio 2017 有哪些新功能?

Page 16: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

• 全新設計的安裝程式,安裝更快速更容易選取安裝所需的功能• 最佳化,減少啟動時間和解決方案載入時間速度加快至少

50%• IDE 中的通知列,提供延伸模組執行效能不佳的警示• 程式碼 ( 編輯器 / 建議 ) 增強

• 以前需安裝 Indent Guides 、 Productivity Power Tools 、 ReSharper… 才有的功能

Visual Studio 2017 有哪些新功能?

Page 17: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

• 全新設計的安裝程式,安裝更快速更容易選取安裝所需的功能• 最佳化,減少啟動時間和解決方案載入時間速度加快至少

50%• IDE 中的通知列,提供延伸模組執行效能不佳的警示• 程式碼 ( 編輯器 / 建議 ) 增強

• 以前需安裝 Indent Guides 、 Productivity Power Tools 、 ReSharper… 才有的功能• 擴充套件的批次安裝、漫遊功能

Visual Studio 2017 有哪些新功能?

Page 18: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

• 全新設計的安裝程式,安裝更快速更容易選取安裝所需的功能• 最佳化,減少啟動時間和解決方案載入時間速度加快至少

50%• IDE 中的通知列,提供延伸模組執行效能不佳的警示• 程式碼 ( 編輯器 / 建議 ) 增強

• 以前需安裝 Indent Guides 、 Productivity Power Tools 、 ReSharper… 才有的功能• 擴充套件的批次安裝、漫遊功能

Visual Studio 2017 有哪些新功能?

Page 19: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

• 全新設計的安裝程式,安裝更快速更容易選取安裝所需的功能• 最佳化,減少啟動時間和解決方案載入時間速度加快至少

50%• IDE 中的通知列,提供延伸模組執行效能不佳的警示• 程式碼 ( 編輯器 / 建議 ) 增強

• 以前需安裝 Indent Guides 、 Productivity Power Tools 、 ReSharper… 才有的功能• 擴充套件的批次安裝、漫遊功能• 「附加至處理序」篩選功能

Visual Studio 2017 有哪些新功能?

Page 20: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

• 全新設計的安裝程式,安裝更快速更容易選取安裝所需的功能• 最佳化,減少啟動時間和解決方案載入時間速度加快至少

50%• IDE 中的通知列,提供延伸模組執行效能不佳的警示• 程式碼 ( 編輯器 / 建議 ) 增強

• 以前需安裝 Indent Guides 、 Productivity Power Tools 、 ReSharper… 才有的功能• 擴充套件的批次安裝、漫遊功能• 「附加至處理序」篩選功能

Visual Studio 2017 有哪些新功能?

Page 21: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

• 全新設計的安裝程式,安裝更快速更容易選取安裝所需的功能• 最佳化,減少啟動時間和解決方案載入時間速度加快至少

50%• IDE 中的通知列,提供延伸模組執行效能不佳的警示• 程式碼 ( 編輯器 / 建議 ) 增強

• 以前需安裝 Indent Guides 、 Productivity Power Tools 、 ReSharper… 才有的功能• 擴充套件的批次安裝、漫遊功能• 「附加至處理序」篩選功能• 偵錯、例外處裡的增強 ( 跳到游標執行處、更友善的錯誤訊息 ..)

Visual Studio 2017 有哪些新功能?

Page 22: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

• 全新設計的安裝程式,安裝更快速更容易選取安裝所需的功能• 最佳化,減少啟動時間和解決方案載入時間速度加快至少

50%• IDE 中的通知列,提供延伸模組執行效能不佳的警示• 程式碼 ( 編輯器 / 建議 ) 增強

• 以前需安裝 Indent Guides 、 Productivity Power Tools 、 ReSharper… 才有的功能• 擴充套件的批次安裝、漫遊功能• 「附加至處理序」篩選功能• 偵錯、例外處裡的增強 ( 跳到游標執行處、更友善的錯誤訊息 ..)

Visual Studio 2017 有哪些新功能?

Page 23: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

• 全新設計的安裝程式,安裝更快速更容易選取安裝所需的功能• 最佳化,減少啟動時間和解決方案載入時間速度加快至少

50%• IDE 中的通知列,提供延伸模組執行效能不佳的警示• 程式碼 ( 編輯器 / 建議 ) 增強

• 以前需安裝 Indent Guides 、 Productivity Power Tools 、 ReSharper… 才有的功能• 擴充套件的批次安裝、漫遊功能• 「附加至處理序」篩選功能• 偵錯、例外處裡的增強 ( 跳到游標執行處、更友善的錯誤訊息 ..)• Live Unit Testing (Enterprise)…

Visual Studio 2017 有哪些新功能?

Page 24: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

• 全新設計的安裝程式,安裝更快速更容易選取安裝所需的功能• 最佳化,減少啟動時間和解決方案載入時間速度加快至少

50%• IDE 中的通知列,提供延伸模組執行效能不佳的警示• 程式碼 ( 編輯器 / 建議 ) 增強

• 以前需安裝 Indent Guides 、 Productivity Power Tools 、 ReSharper… 才有的功能• 擴充套件的批次安裝、漫遊功能• 「附加至處理序」篩選功能• 偵錯、例外處裡的增強 ( 跳到游標執行處、更友善的錯誤訊息 ..)• Live Unit Testing (Enterprise)…

Visual Studio 2017 有哪些新功能?

Page 25: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

• 全新設計的安裝程式,安裝更快速更容易選取安裝所需的功能• 最佳化,減少啟動時間和解決方案載入時間速度加快至少

50%• IDE 中的通知列,提供延伸模組執行效能不佳的警示• 程式碼 ( 編輯器 / 建議 ) 增強

• 以前需安裝 Indent Guides 、 Productivity Power Tools 、 ReSharper… 才有的功能• 擴充套件的批次安裝、漫遊功能• 「附加至處理序」篩選功能• 偵錯、例外處裡的增強 ( 跳到游標執行處、更友善的錯誤訊息 ..)• Live Unit Testing (Enterprise)…• Docker Project Support…• ……..

Visual Studio 2017 有哪些新功能?

Page 26: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

團隊開發永遠的痛 – 談團隊開發的困難點?

Page 27: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

近年來,軟體開發因為市場環境劇烈環境的變化,因此我們談「敏捷」

Product Owner

ScrumMaster Team

Member

Stakeholder

Page 28: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

• 團隊 Skills 不同• 溝通 - 沒有共同的溝通語言• 寫好的程式在開發環境測試都沒問題,整合測試時就狀況連連 ...• 交接的時候…

所以,如果團隊開發…

圖片來源: http://www.qdhll.net

Page 29: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

一個實際的案例…

Page 30: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

• 某天, X 公司的開發主管要求某專案改以 ABC Framework 來進行開發• A 同仁:這方法有我的方便嗎?• B 同仁:好像有點難使用,我需要一點時間學習… .• C 同仁:你會教我們嗎?

場景 ( 一 ) :

Page 31: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

• 某天, X 公司的開發主管要求某專案改以 ABC Framework 來進行開發• A 同仁:這方法有我的方便嗎?• B 同仁:好像有點難使用,我需要一點時間學習… .• C 同仁:你會教我們嗎?

使用 Project Templates

場景 ( 一 ) :

我的答案是什麼?

Page 32: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

所以… ..你還在等 Visual Studio 裡,會有適合 ( 你/團隊 / 專案 ) 使用的樣版嗎?別傻了… 還是自己客製一個吧!

Page 33: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

關於 Visual Studio Extensibility SDK for 2017

Page 34: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)
Page 35: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

• 在 Visual Studio 2010 時推出• 讓您可以撰寫程式 (VSPackage) 來擴充你的 Visual

Studio• 將命令、 按鈕、 功能表和其他 UI 項目新增至 IDE

(VSPlugIn)• 擴充指定語言的 IntelliSense • 自訂專案類型 (Project Template)• 相關連結:

• Visual Studio Extensibility (VSX)• http://www.visualstudioextensibility.com/• Visual Studio Doc 新的文件入口• https://dot.net/• Extensibility in Visual Studio• https://msdn.microsoft.com/en-us/library/dn919654.aspx

Microsoft Visual Studio 2017 Extensibility SDK

Page 36: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

Visual Studio 2017 Extensibility SDK 的一些改變

Page 37: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

• 排程安裝擴充套件、漫遊• VSIX 的 manifest 格式提升到 v3 的格式

• 安裝 VSIX 封裝時您可能需要更明確的指定此 VSXI 安裝包的先決條件 (prerequisites)• 新版的 VSIX 在安裝的時候會更為嚴謹

• 支援在 VSIX 安裝包理將 Assembly 註冊到 Ngen• 允許將 VSIX 安裝包裡面的資產安裝在 Extension

folder 以外的地方• 未來不再支援 GAC

Visual Studio 2017 Extensibility SDK 的一些改變

Page 38: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

Project Template 與 IWizard 的關係是什麼?

Page 39: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

什麼是 Visual Studio Project Template?

Page 40: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

• Visual Studio 提供初始建立專案的樣版• 定義不同的應用程式類型 (Web 、 Desktop 、 Cordova 、

UWP…)• 決定 Platform 、決定 Target framework 、初始化項目…• 從 VS2010 開始,您可以透過 VSPackage 來擴充、客製你的 VS 擴充功能

• 如: OzCode 、 ReSharper 、 Indent Guides 等,都是使用 VSPackage 所開發• 你可以使用 VSIX 來發佈你的 VSPackage 或是 Project

Template• 甚至使用 DTE 的 IWizard 介面來程式化真正動態的

Project Template

什麼是 Visual Studio Project Template?

Page 41: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

• Visual Studio 透過 DTE (Development Tools Environment) 公開出來的可程式化介面• 參考 DTE & Microsoft.VisualStudio.TemplateWizardInterface• 在 VSIX 的容器裡允許包含 Assembly• 簽署 VSIX 專案

什麼是 IWizard ?

Page 42: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

• Visual Studio 透過 DTE (Development Tools Environment) 公開出來的可程式化介面• 使 Project Templates 不只局限於範本或 T4 引擎• 增加自行撰寫的 UI/Wizard 介面使範本更具親和力• 創造無限可能性 (Code Generate)

什麼是 IWizard ?

Page 43: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

聽說, NuGet Package 也可以包 Templates…

Page 44: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

何時該使用 Project Template ?何時使用 NuGet ?

Page 45: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

何時用 Project Template ?何時用 NuGet ?UI (Web

Page/View/)

Controller 或 BasePage 或 Sample Code

Pattern 共用的 Interface 或

Common Class

Configuration (web.config/App.config) or

ConnectionString

References 參考的組件 或 DLL (Class

Library)

Project Templates

NuG

et Packages 或IW

izard前端

後端

Page 46: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

Demo :Project Template 成品演示1. MyORM Framework2. EasyArchitect UI

Page 47: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

• MyORM Framework• 使用 MyORM Framework 產生 DataAccess

• EasyArchitect UI Framework • 建立 ASP.NET MVC 5 包含 Web API 2 與 jQuery+KendoUI 為基底的 UI• 透過 Item Template Wizard 產生 GridView

使用包含 IWizard 的 Project Templates 建置框架

Page 48: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

這樣就夠了嗎?

Page 49: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

1) 使用原始檔版本控制 (首要項目 ) 不管是一人開發,或是多人開發因為對於 Framework 或 框架 的開發也要導入 Version Control2) 導入 Work Item 原本 WBS 或 WKM 系統上的工作項目要能夠與 TFS 整合3) 盡可能落實 Code-Review4) 導入 Check-In Policy 定義 開發的守則 ( 共同規範 ) (Coding Standard) (Programming Rule) 要有文件 & StyleCop policy XML 檔案5) 導入 Team Build 並落實 VS 程式碼分析 goto (3) 循環6) 使用 Team Build 並結合 (TFS/VSTS) StyleCop Check-In Policy goto (3) 循環7) 導入 & 實作 Unit Test 測試涵蓋率8) 導入 Team Build 結合自動化 Unit Test9) 效能 & 壓力測試

在我這邊的團隊還會搭配…… ..

Page 50: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

Demo :如何使用 Visual Studio 2017 Extensibility SDK 建立 C# Project Template

Page 51: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

如何偵錯 Project Template 或 範本精靈?

Page 52: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

• 為避免您的 VS 應用程式變更到 VS 相關設定• Project Templates• VSIX• VSPackages

• 可使用如下命令啟動 VS 2017 實驗性執行個體:• 「 [VS 安裝資料夾 ]\Common7\IDE\devenv.exe“ /rootSuffix

Exp 」

Visual Studio 實驗性實行個體

Page 53: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

Demo :如何使用 Visual Studio 實驗性質行個體來偵錯包含 IWizard 的 Project Template

Page 54: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

• Visual Studio Extensibility (VSX)• http://www.visualstudioextensibility.com/• Visual Studio SDK• https://msdn.microsoft.com/en-us/library/bb166441.aspx• Developing Visual Studio Project Wizards• http://www.windowsdevcenter.com/pub/a/windows/2007/06/06/developing-visual-stud

io-project-wizards.html• What's New in the Visual Studio 2017 SDK• https://docs.microsoft.com/en-us/visualstudio/extensibility/what-s-new-in-the-visual-st

udio-2017-sdk• Changes in Visual Studio 2017 extensibility• https://docs.microsoft.com/en-us/visualstudio/extensibility/breaking-changes-2017• How to: Migrate Extensibility Projects to Visual Studio 2017• https://docs.microsoft.com/en-us/visualstudio/extensibility/how-to-migrate-extensibilit

y-projects-to-visual-studio-2017• Lightweight Solution Load (LSL)• https://docs.microsoft.com/en-us/visualstudio/extensibility/lightweight-solution-load-e

xtension-impact

References

Page 55: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

Q & A

Page 56: 團隊開發永遠的痛   談導入團隊開發的共同規範(Final)

• 部落格 (Gelis 技術隨筆 ) https://www.dotblogs.com.tw/gelis/• FB 粉絲團 (Gelis 的程式設計訓練營 ) https://www.facebook.com/gelis.dev.learning/?ref=bookmarks• FB 社團 ( 軟體開發之路 ) https://www.facebook.com/groups/361804473860062/?ref=ts&fref=ts• 我的 SlideShare https://www.slideshare.net/GelisWu• 我的 GitHub https://github.com/wugelis

聯絡資訊


Related Documents