Alan Tsai 的學習筆記


學而不思則罔,思而不學則殆,不思不學則“網貸” 記錄軟體開發的點點滴滴 著重於微軟技術、網頁開發、DevOps、C#, Asp .net Mvc、Azure、AI、Chatbot、Docker、Data Science

[打造自己的template-建立一致性程式碼][09]內建VSIX的缺點 - SideWaffle基本介紹

[打造自己的template-建立一致性程式碼][09]內建VSIX的缺點 - SideWaffle基本介紹
圖片來源:https://pixabay.com/en/annual-report-book-brochure-686343/

在上篇([08]Visual Studio Experimental Instance 和 VSIX template的細節設定介紹) 介紹完了Visual Studio(以下簡稱VS)的Experimental Instance的一些維護方式和VSIX template的一些細節設定。內建VSIX方式建立template基本就告一個段落。

不過會發現雖然用VSIX可以版控template專案和部署的時候變得容易,但是建立template的過程有些地方還是過於繁瑣。SideWaffle因此而誕生

這篇將會對現行做法有什麼問題在做一些介紹,和SideWaffle如何讓這些變得更加容易。

VSIX建立template的問題

VSIX建立template的方式比匯出的方式已經在版控和安裝上面一大進步了,但是在建立template的事情上面還是有點不便利。

最大的不便利就是template內容本身的修改不方便。

由於template裡面有一些Parameter(例如$safeprojectname$) - 所以假設今天template本身要加檔案或者要改內容,需要手動改vstemplate(來把檔案加入),並且由於有哪些Parameter,也沒辦法像一般solution那樣build做測試。

這些導致每一次要改template:

  1. 需要先用template new project建立出來
  2. 做好調整
  3. 在用匯出方式產生出來
  4. 把zip檔案解壓縮出來更新到Project Template專案

所以修改template非常繁瑣。

為了解決這個問題,一個open source專案誕生了:SideWaffle

SideWaffle是什麼?

SideWaffle是一個VS套件可以裝在2012/2013/2015。

最當初的目的是提供一些常見專案類型的template和一些Snippet;由於要管理這麼多template也很花時間,因此也包含了一些VS tweak讓建立template更加簡單。

SideWaffle小檔案

提供以下功能:

  1. 一些Project Template
  2. 一些Item Template
  3. 一些Snippet
  4. 方便建立Template的VS tweak

SideWaffle 版本問題 - VS 2017怎麼辦?

官方support版本只有到VS 2015,沒有support VS 2017,不過有第三方調整讓VS 2017可以安裝 Visual Studio 2017 support

在未來,官方會有一個全新的版本, 目前已經有發佈在Marketplace叫做SideWaffle Creator 2017需要VS 2017.3版本才能夠正常使用。

是否一定要安裝SideWaffle?

如果不需要那些提供的Project Template、Item Template和Snippet,其實可以不用安裝SideWaffle。

讓template更容易建立是透過一個nuget套件叫做TemplateBuilder,SideWaffle只是讓建立TemplateBuilder相關檔案更加容易

所以,如果只是為了建立template更加方便,可以不用裝SideWaffle。

TemplateBuilder如何讓建立template變得容易?

TemplateBuilder是裝在VSIX專案裡面,裝好了之後,會自動做幾個事情:

  1. 加入MSBuild的target ligershark.templates.targets原始碼
  2. 自動加入 Asset到VSIX的vsixmanifest檔案裡面 - 自動加入 Output/ItemTemplates和Output/ProjectTemplates

MSBuild的target會做很多事情,其中比較重要的有:

自動把所有對應檔案把特定的值替換成設定的值
不需要在cs檔案裡面改成Parameter,用規則自動替換 - 換句話說因為沒有Parametercs可以build
自動依照csproj裡面設定建立出vstemplate裡面的檔案清單
不需要自己手動寫vstemplate裡面的那些檔案要包含
不用手動寫vstemplate裡面的ProjectItem,會自動依照csproj建立
把VSIX專案裡面資料夾ProjectTemplatesItemTemplatesSnippets自動加入到 vsix
用Convention的方式知道那些內容屬於Project Template、Item Template 和 Snippet。

簡而言之,TemplateBuilder能夠讓專案保持在可build的情況下又能夠直接產生template,讓修改template變得和開發一樣方便

結語

在這篇對於VSIX修改template的繁瑣步奏做了說明,並且簡單介紹了SideWaffle所帶來的功能和TemplateBuilder如何讓建立Template變得簡單。

在下篇將會對如何用SideWaffle提供的VS tweak讓用TemplateBuilder建立Project Template非常簡單。

參考資料

How SideWaffle Works
介紹TemplateBuilder的作用
SideWaffle VS 2015 官網
官網介紹VS 2015
Sidewaffle Creator (2017)
SideWaffle VS 2017 版本,需要VS 2017.3才能夠裝
SideWaffle Creator 的願景
SideWaffle VS 2017 和 .net core 如何整合搭配

如果文章對您有幫助,就請我喝杯飲料吧
街口支付QR Code
街口支付QR Code
台灣 Pay QR Code
台灣 Pay QR Code
Line Pay 一卡通 QR Code
Line Pay 一卡通 QR Code
街口支付QR Code
支付寶QR Code
街口支付QR Code
微信支付QR Code
comments powered by Disqus