fbpx

[中文課程] C# Project Template 快速開發

學習透過 Visual Studio C# Project Templates

建立慣用開發方案!

讓開發工作更加有效率 ,

Visual Studio 2017 Community/Professional/Enterprise 皆適用

 

為什麼要學 

# Don’t Repeat Yourself

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

wl1

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

透過 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,快速的產生你的既定的框架 。而這堂課將會帶領您,如何學習將自身的開發環境現狀以及所學技能,產出最適合自己和團隊的開發方法。

課程特色

  • 深度解析 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 為軟件開發的主要工具

課程介紹 (共 2 小時)

🌿快速了解 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 檔案並加入
  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. 如何建立 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 製作

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

  1. 專案檔 (.csporj) 概述
  2. 將 C# Project Templates 改為 Web Project 專案檔案
  3. 如何將 Kendo UI HTML5 Framework 包裝為 Web Project 的 C# Project Templates?
  4. 商業套件架構規劃
  5. Front-End 套件 & NuGet Package 架構規劃
  6. 核心套件規劃 與 Web API Framework 的 Project Template 製作

🌿Item Template 進階說明

  1. Item 樣板設計 & 程式碼撰寫
  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

講師介紹

teacher.png

Gelis – .NET 資深技術顧問

講師經歷:

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

我是 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,有個人的技術部落格 『Gelis 技術隨筆』,以記錄在技術上學習的新知與個人的研究發表。


更多資訊  去預覽📈

hiskiocsharptemplate

Sponsored by Hiskio

也許你會有興趣

喜歡我們的分享嗎? 使用以下的社群分享按鈕分享給你的朋友吧!

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料

Powered by WordPress.com.

Up ↑

%d 位部落客按了讚: