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

也許你會有興趣

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

Spread the love

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

Powered by WordPress.com.

Up ↑

%d 位部落客按了讚: