2017年9月6日 星期三

[打造自己的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 如何整合搭配

沒有留言 :

張貼留言