在上篇([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:
- 需要先用template new project建立出來
- 做好調整
- 在用匯出方式產生出來
- 把zip檔案解壓縮出來更新到Project Template專案
所以修改template非常繁瑣。
為了解決這個問題,一個open source專案誕生了:SideWaffle
SideWaffle是什麼?
SideWaffle是一個VS套件可以裝在2012/2013/2015。
最當初的目的是提供一些常見專案類型的template和一些Snippet;由於要管理這麼多template也很花時間,因此也包含了一些VS tweak讓建立template更加簡單。
SideWaffle小檔案
提供以下功能:
- 一些Project Template
- 一些Item Template
- 一些Snippet
- 方便建立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專案裡面,裝好了之後,會自動做幾個事情:
- 加入MSBuild的target
ligershark.templates.targets
(原始碼) - 自動加入
Asset
到VSIX的vsixmanifest
檔案裡面 - 自動加入 Output/ItemTemplates和Output/ProjectTemplates
MSBuild的target會做很多事情,其中比較重要的有:
- 自動把所有對應檔案把特定的值替換成設定的值
- 不需要在cs檔案裡面改成
Parameter
,用規則自動替換 - 換句話說因為沒有Parameter
cs可以build - 自動依照csproj裡面設定建立出vstemplate裡面的檔案清單
- 不需要自己手動寫vstemplate裡面的那些檔案要包含
- 不用手動寫vstemplate裡面的
ProjectItem
,會自動依照csproj建立 - 把VSIX專案裡面資料夾
ProjectTemplates
和ItemTemplates
和Snippets
自動加入到 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 如何整合搭配