C# Project Template 快速開發

學習透過 Visual Studio C# Project Templates 建立慣用開發方案!讓開發工作更加有效率 ,Visual Studio 2017 Community/Professional/Enterprise 皆適用

100 %
133 人
教師 : Gelis
NT$ 1390
$NT 18007.7折
  • 課程水平 中高階
  • 使用語言 中文
  • 章節 18
  • 時數 3小時10分
  • 18 支影片
  • 無限次觀看
  • 課程新增不額外收費

課程介紹

早鳥優惠名額

第三期 基本優惠:預計 $ 1390

(優惠名額與價格將依實際狀況進行彈性調整)


  1. 價格將依照 課程製作完成度、購買人數、優惠名額...等條件,進行價格調整, 以實際公告與當下購買之金額為主,越早預購越划算喔!
  2. 若有任何教學內容上的 建議 或 許願,請至 「購課問答」留言給老師。

為什麼需要 C# Project Template?

# Don't Repeat Yourself


許多開發人在專案開發上,總是 不斷的重複著某些必要卻費時費力的工作,如果您已經有多年的專案開發的經驗,但是您每次建立一個新的 Project 時,就得要重新 References 相關的參考、或者是重複的安裝相關的 nuget 套件、又或者是 COPY 一些每個專案都會共用的程式碼 (比如:Common Utility/Business Logic/DataAccess Layer 等等) 如果有以上這些情況,那麼您可以考慮將您現有的程式碼資產包裝成 C# Project Templates!


快速建置自己慣用的開發方案

# 整合累積的專案資產,建立方案,一步到位!


透過 C# Project Template 您將可以把自己多年來,所累積的專案資產包括 軟體架構、共用模組、商業邏輯、前端套件、程式碼骨架給打包整合,建立不同的慣用方案,如:BO (Business Object Project)/WebAPI Host Project/VO (View Objects Project) 等等、或甚至是 Data Access Project,就如同我的 MyORM 一般。


學會整合開發流程、思路與脈絡

# 學會整合、優化開發流方法提昇功力吧!


許多開發人員和團隊到了一個階段後,便會開始尋求如何讓開發工作做更加簡便、有效率,而這堂課將會用以技術顧問的經驗切入做設計,教您如何正確地透過 C# Project Template 建立並整合出更快速的開發方法!

為什麼想要開這堂課程?

# 活用工具並融合開發經驗,更上一層樓!


我過去擔任過許多公司的技術顧問,發現許多開發人員和團隊都存在著相同的問題。就是埋頭苦幹,卻沒時間停下來好好思考,如何讓開發工作更加有效率。 許多開發人員、或團隊甚至不知如何整理自己所學的軟體架構、商業邏輯物件 BO (Business Object)、共用模組 Common Utility 或甚至是資料存取層 Data Access Layer 都可以透過 C# Project Template 撰寫成互動式精靈 UI,快速的產生你的既定的框架 。而這堂課將會帶領您,如何學習將自身的開發環境現狀以及所學技能,產出最適合自己和團隊的開發方法。

課程詳細規劃

# 詳細 C# Project Template 開發須知


快速了解 C# Project 

  • 如何將現有共用程式碼 DLL 或 類別庫 專案 包裝成 NuGet Package?
  • 什麼是 Visual Studio C# Project Template?
  • 製作範本精靈可以達到什麼好處?
  • 一致性的開發規範 - Coding Standard (Programming Rule)

  • 開發更一致化、容易標準化

  • 加快開發的效率 - 避免重複造輪子

  • 減低人為的錯誤率

  • 保障程式碼品質 (搭配 UnitTest & Code Review)

  • 讓程式碼更容易交接、維護、與重用

  • 經由以上幾點,達到加速開發的優點

開始製作第一個 Project Template

  • 安裝 Visual Studio 擴充功能開發
  • 將你的共用 CommonUtility 包裝成 NuGet 套件
  • 新增 C# Project Template 專案
  • 在 C# Project Template 加入相關項目
  • 新增 VSIX Project 專案

Item Template 簡介、與製作第一個 Item Template

  • 對 Project 的單一項目做編輯
  • 依照專案需求,客製化的加入項目
  • 每個 Item Template 可以有獨立精靈操作介面
  • 如何將 C# Project Template 的 OutputType 改為 Console Application?
  • 將 Console Application 的 C# Project Template 包裝到 VSIX 中
  • 並使用『實驗性執行個體』來測試建立這個 Console Application 的 Project Template
  • 並 使用『新增項目』加入剛剛我們加入到 VSIX 資產中的 Item Template

IWizard 與 Visual Studio DTE 簡介

  • Visual Studio 2017 Extensibility SDK 的一些改變
  • 什麼是 IWizard?
  • Visual Studio 可程式化界面環境 DTE (Development Tools Environment) 說明
  • 何時該使用 Project Template?何時使用 NuGet?

如何建置一個支援 IWizard 的 Project Templates?

  • 5.1. IWizard 介面詳細解說 
  1. 實作如何引用 DTE & Microsoft.VisualStudio.TemplateWizardInterface
  2. IWizard 基本事件介紹
  • 5.2. 簽署 VSIX Assembly & 允許 VSIX 包含 Assembly 
  1. 要讓 VSIX 內容可包含程式碼 Assembly 必須簽署 VSIX 專案
  2. 修改 ConsoleProjectTemplate.vstemplate 檔案並加入 <WizardExtension></WizardExtension>
  3. 使用 sn.exe -T [你的 VSIX DLL]
  4. 複製到 ProjectTemplates\Hello Console App\1033\ 資料夾 覆蓋掉
  • 5.3. 建立互動式 UI 介面 - 使用 Windows Form
  1. 實際在 VSIX 專案加入 Windows Form
  2. 並在 HelloWorldWizard 的 RunStarted 方法上撰寫程式碼
  3. 測試專案的建立可以透過精靈 UI 上點選 OK 按鍵後產生
  • 5.4. Visual Studio 的 ReplacementsDictionary 物件原理與機制解說
  1. 內建參數說明:$projectname$、$safeprojectname$、$registeredorganization$、$guid1$、$targetframeworkversion$
  2. 基本運算式說明:$if$ ($targetframeworkversion$ >= 3.5)using System.Linq;、$endif$
  3. 使用 replacementsDictionary.Add("$MethodName$", frmHelloWizard.GlobalVars.SelectedMethodName); 更改 Class1 內的 Method 名稱
  • 5.5. IWizard 基本架構規劃 與 基本 互動式 UI 設計 
  • 5.6. 如何動態建立 Class 的 CS 檔案?
  1. 建立 Def 定義檔案(不一定要寫死、建議可將 Def 放在 XML 檔案中)
  2. 撰寫 ProjectFinishedGenerating 事件來建立 動態 Class 檔案
  • 5.7. 如何修復找不到 套件:MyCommonUtil.1.0.0.nupkg 的問題? 
  1. 模擬在建置 C# Project Tamplates 專案時,找不到定義在 packages.config 內的『自定義 NuGet Package』的問題
  2. 解釋、並提供解決方案,告訴大家如何解決此問題
  • 5.8. 包裝到 VSIX 中,並使用『實驗性執行個體』測試
  1. 重新解釋在 5.6 當中,動態產生 Class 時,為何都是小寫
  2. 解釋讀取自定義的 C# Def Template 的時候,在哪裡處理 ToUpperCase/ToLowerCase
  3. 啟動 Visual Studio 實驗室執行個體 相關注意事項

即將新增(6-7)章節:

6. 如何建立 Web 專案類型的 C# Project Template?

  • 6.1. 專案檔 (.csporj) 概述
  1. 深入探討 .csproj 專案檔結構,說明 Web 專案檔與一般 C# 專案檔三個內容不同的地方
  • 6.2. 將 C# Project Templates 改為 Web Project 專案檔案
  1. 動手實作,將建立的 C# Project Templates 改為 Web Project
  • 6.3. 如何將 Kendo UI HTML5 Framework 包裝為 Web Project 的 C# Project Templates?
  1. 匯入匯出專案的妙用,貼上 Kendo UI 內容,將匯出的專案加入倒 VSIX
  • 6.4. 商業套件架構規劃(此章節區分為兩個獨立章節
  1. Front-End 套件 & NuGet Package 架構規劃
  2. 核心套件規劃 與 Web API Framework 的 Project Template 製作

在這個小節裡面,我會融合從 1.1 章 ~ 6.4 章節的所有內容,使用我自己開發的 Web Project Template Host 來建立網站(這個網站完全是一個 C# Project Template 所建立的,包括 Bootstrap + jQuery 等基本套件),而我會 Demo 如何將 Vue.js 的 Front-End 項目加入到 C# Project Template 中,再重新 ReBuild,接著,就使用『實驗性執行個體』進行一連串的開發工作。


這是一個重無到有的建置過程,我在影片中,展示如何從無到有的建置一個『使用者資料維護』清單畫面。


這個應用程式會有基本的 Website(Host) + BO (Business Object) + DataAccess (MyORM)


步驟大致上如下:

(1). 建立 Website (這裡稱作 WebAPIHost) 是一個含括 EasyArchitect Web API Host (ApiHostBase) 的網站

(1.1). 也會順便解釋 EasyArchitect Framework 的 ApiHostBase 的定義

(2). 建立 BO 專案 (這是一個 ServerComponent 的類別庫專案)

(3). 使用 Postman 測試預設的 GetDateTime 測試方法

(4). 建立 DataAccess 專案 (MyORM 的 MyORM2UnitOfWorkRepositoryProject 的範本來建立)

(5). 撰寫 BO 的 GetUsers() 的Web API 方法 並設定 APO 屬性 Attributes [EnabledAnonymous(true), ExposeWebAPI()]

(6). 使用 先前所學習建立的 UserGridItem 的 Item Template 來建立 使用者清單查詢 【Index 檢視頁面項目】

(7). 安裝 EasyArchitect.Client.BackendService.jQuery 透過它來渲染 Vus.js

(8). 測試應用程式


這個從無到有的過程,會使用到我先前在『軟體開發之路 - 技術分享會(第一場)- 客製化 Web API 框架設計』的,使用客製化 EasyArchitect Web API Framework 框架設計商業應用程式(https://www.slideshare.net/GelisWu/web-api-77930234),而這裡全面的導入 C# Project Templates!


而先前我也有一篇文章:『從使用者需求、談架構設計(二)- Clean Architecture 一個整潔的架構篇』,在這個文章中,所使用的 Web API 的框架也是基於這個框架所撰寫而成的!


7. Item Template 進階說明

  • 7.1. Item 樣板設計 & 程式碼撰寫
  • 7.2. 如何設計一個可以產生 Kendo Grid 的 Item Templates?

開發環境的準備

1. 安裝 Visual Studio 2017 Community/Professional/Enterprise (任一版本皆可)

下載連結:https://www.microsoft.com/net/download/windows

2. 並確認安裝好 Visual Studio 2017 Extensibility SDK 擴充功能開發(並同時已經安裝好『Web 網頁開發』、『Desktop 桌面開發』、『.NET Core 跨平台開發』安裝.NET跨平台開發是為了nuget.command.CLI 會自動安裝在User Profile下)

3. 透過 Visual Studio 2017 的擴充功能與更新 來安裝 MyORMWizardExtensions 套件

4. 安裝好 NuGet Package Explorer

下載連結:https://github.com/NuGetPackageExplorer/NuGetPackageExplorer

5. 安裝 NuGet CLI 公用程式 (如果課程中您找不到 nuget.command.line 路徑時,請自行下載 COPY 到該路徑中)

下載連結:https://docs.microsoft.com/zh-tw/nuget/install-nuget-client-tools


關於講師 Gelis - .NET 資深技術顧問


我是 Gelis,從事軟體專案開發相關工作已經 19 餘年(顧問工作4年),專案開發 15 年,目前任職於集英信誠顧問公司,目前主要負責與 .NET 相關的開發、顧問工作。


我熱愛軟體工程、UML 系統分析與設計,擅長 OO 物件導向分析與設計外,也擅長將看似與程式碼無關的 OOA 與 OOD 的設計模型推導為實際程式碼設計,專精於 .NET 平台網頁 ASP.NET Web Form 與 MVC 開發與 WinForm 開發,領域包含了 WinForm、WPF 等。


主要負責軟體開發架構、流程的導入的顧問工作,主要核心價值在於在導入適當的開發平台 Platform 框架 Framework,配合 (Team Foundation Server, TFS) 產品與 ALM 的Scrum 流程,搭配自動化 Code-Review 並結合 Team Build 進行自動化測試,自動化部署 (Continuous Deployment, CD),並達到持續整合 (Cintinuous Integrated, CI),以提升開發團隊的效率與價值。


曾經連任七屆微軟最有價值專家 MVP (2011 ~ 2017),有個人的技術部落格 『Gelis 技術隨筆』,以記錄在技術上學習的新知與個人的研究發表。


講師經歷:

  • 2015集英信誠-與大師對談講師
  • Visual Studio Everywhere 台北場講師
  • Study4.TW 社群講師
  • 企業內訓講師

現職:

  • 集英信誠 資深 .NET 技術顧問
  • 現任 Microsoft MVP

部落格 (Gelis 技術隨筆):

http://gelis-dotnet.blogspot.tw

https://www.dotblogs.com.tw/gelis/

FB 社團 (軟體開發之路):

https://www.facebook.com/groups/361804473860062/

FB 粉絲團 (Gelis 的程式設計訓練營):

https://www.facebook.com/gelis.dev.learning/

我講授過的課程 SlideShare:

https://www.slideshare.net/GelisWu

Github:

https://github.com/wugelis



課程特色

  • 深度解析 Visual Studio Extensibility SDK 所提供的功能、了解如何在 Visual Studio 中擴充其功能。
  • 將共用部分(Common Utility)、你的 Business Logic 骨架,包裝成可重複使用的 C# Project Templates
  • 沒有攏長的說明、全為作者近20年專案開發實務經驗、也是作者目前實際在專案中的實際做法分享。
  • 每個章節搭配一個 Sample Code,看影片的同時,也可以自己親手實作。
  • 課程中,除了實作,講師同時也會說明『基本觀念』及『理論』,強調使用理解的方式來學習。

適合我嗎?需要那些課程準備?

適用對象

  • 適合 2-3年 C# 軟體開發經驗的朋友、有 ASP.NET 網頁開發經驗更佳。
  • 想學習如何透過 Project Template 優化開發方法的開發者
  • 具ASP.NET WebForm 或 MVC (使用 C#) 開發經驗的程式設計師、想了解如何透過範本精靈來減低重複性的工作、或加速開發、避免重複造輪子。
  • 或者,您手邊已經有許多專案經驗所累積的相關資產,如:(Common Utility/Web Project 骨架/DALModule... 或甚至你的 Business Logic 或者包含團隊共同規範的樣版) 都可以考慮包裝成一個 Project Templates

工具準備

  • Visual Studio 2017 Community 包括:ASP.NET Web 開發、Visual Studio 擴充功能開發

知識準備

  • C# OOP
  • ASP.NET MVC 5 開發經驗
  • 原本即使用 Visual Studio 為軟件開發的主要工具

課程章節表

第1章

為什麼要製作 Project Template?與 製作 Project Template 可以達到什麼好處?
1
Visual Studio C# Project Template 課程目標、內容說明
05:02
2
什麼是 C# Project Template?它可以幫助您做到什麼?
17:45

第2章

製作第一個Project Template
1
安裝 Visual Studio 擴充功能開發 與 將你的共用 CommonUtility 包裝成 NuGet 套件
18:37

第3章

Item Template簡介、與製作第一個Item Template
1
什麼是 Item Template 與 製作你的第一個 Item Template
11:08

第4章

IWizard 與 Visual Studio DTE 簡介
1
IWizard 簡介
05:34

第5章

如何建置一個支援 IWizard 的 Project Templates?
1
5.1. IWizard 介面詳細解說
08:28
2
5.2. 簽署 VSIX Assembly & 允許 VSIX 包含 Assembly
07:15
3
5.3. 如何建立互動式 UI 介面
10:40
4
5.4. Visual Studio 的 ReplacementsDictionary 物件原理與機制解說
09:18
5
5.5. IWizard 基本架構規劃 與 基本 互動式 UI 設計
02:19
6
5.6. 如何動態建立 Class 的 CS 檔案?
12:41
7
5.7. 如何修復找不到 套件:MyCommonUtil.1.0.0.nupkg 的問題?
03:42
8
5.8. 包裝到 VSIX 中,並使用『實驗性執行個體』測試
05:50

第6章

章節如何建立 Web 專案類型的 C# Project Template?
1
6.1. 專案檔 (.csporj) 概述
08:08
2
6.2. 將 C# Project Templates 改為 Web Project 專案檔案
12:49
3
6.3. 如何將 Kendo UI HTML5 Framework 包裝為 Web Project 的 C# Project Templates?
15:00
4
6.4-1. 商業套件架構規劃(Front-End 套件 & NuGet Package 架構規劃)
05:08
5
6.4-2. 商業套件架構規劃(核心套件規劃 與 Web API Framework 的 Project Template 製作)
31:02

您將會學到的內容

  • 了解 Visual Studio 的 Project Template (範本)如何建立、如何利用範本包裝重複性工作、如何發布自己的範本到 Visual Studio Gallery 造福其他朋友們。
  • 如何規劃,將自己多年累積的專案資產,如:共用程式碼 Common Utility、Business Logic Model (Layer)、DataAccess 等程式碼骨架,包裝成可重複建立、使用的 Project Templates
  • 互動式 UI 設計,產出 Business logic 程式碼