在上篇[04]了解vstemplate來微調匯出的Template和強制VS更新Template的方式 了解了project template的最重要檔案,vstemplate
並且了解了如何微調匯出的Template。
在這一篇將會在了解如何調整vstemplate
來建立多Project(multi project)的Project Template。
為什麼會需要Multi Project Template
一般來說當我們程式比較大一點的時候,我們都會把他們分層。最常見就是分3層:
- DB層
- 邏輯層
- 顯示層
有時候為了好區分,我們可能會把這三層各自建立一個project - 所以假設今天我建立一個新的project直接就建立出3個Project,是不是就會引導大家把對應內容放到對應的Project,來達到關注點分離。
因此,Multi Project的範本也非常的有幫助。
建立Multi Project的情境
首先還是要先建立出未來新增的時候要建立的內容。
所以先建立出一個新的solution,然後把Process
和Model
的CS檔案放到另外一個邏輯層的專案。
建立Multi Project Template
整個建立的流程如下:
- 先把兩個project用匯出的方式匯出Project Template
- 建立出multi project template的資料夾結構
- 整個打包zip
- 放到對應路徑
1 先把兩個project用匯出的方式匯出Project Template
用在第三篇([03]透過匯出建立Project Template)學到的方式,把兩個專案分別匯出。
最後會得到兩個zip檔案。
2 建立出multi project template的資料夾結構
基本上Multi Project和單一project差不多,唯一的差異在於在根會有個vstemplate
檔案,會指向要建立兩個project的vstemplate
。
所以先把兩個zip檔案解壓縮出來,然後在根的資料夾建立一個root.vstemplate
的檔案
Multi Project
|--MHAT.MultiConsole.Bll
|--MyTemplate.vstemplate
|--MHAT.MultiConsole.ConsoleApp
|--MyTemplate.vstemplate
|--root.vstemplate
root.vstemplate
內容則是:
MHAT.ProcessTemplate.ConsoleApp.Multi
<No description available>
CSharp
1000
true
ConsoleApp1
true
Enabled
true
__TemplateIcon.ico
MHAT.MultiConsole.ConsoleApp\MyTemplate.vstemplate
MHAT.MultiConsole.Bll\MyTemplate.vstemplate
這個root.vstemplate
有幾個地方注意一下:
VSTemplate
的Type="ProjectGroup"
- 之前Project Template是
Type="Project"
,而multi project則是ProjectGroup
。 TemplateContent
內容不同- 變成是一個
ProjectCollection
,裡面會包含每一個multi project要包含的vstemplate
的位置,這邊可以注意到ProjectName
則是可以定義建立出來的專案名稱。 透過使用Parameter
可以讓名稱一致。 Projecttemplatelink
的順序很重要- 放在第一個的會作為預設的起始專案。
3 整個打包zip
確認好之後,可以直接把它zip起來,變成multi project template的內容。
4 放到對應路徑
基本上在Document下面的VS的Project Template下面,然後如果要放到某個分類裡面建立對應資料夾。
- 這篇有[03]透過匯出建立Project Template詳細介紹路徑要放哪裡
- 這篇有[04]了解vstemplate來微調匯出的Template和強制VS更新Template的方式介紹分類的資訊。
測試最後結果
放好之後就可以開VS然後測試建立Multi Project。
Wizard
來解決。 結語
了解了Project Template的細節之後,再回來看Multi Project Template,會發現其實很容易理解,只是需要知道ProjectGroup
類型的vstemplate
結構即可。
基本上Project Template的部分差不多到了一個段落,在下一篇將會對於另外一種Template - Item Template作介紹
參考資料
- How to: Create Multi-Project Templates
- 官方介紹的文件
- Visual Studio: How to create a solution template with multiple projects
- 很不錯介紹建立Multi Project Template的教學
- SideWaffle fix for multi-project template structure
Issue with visual studio template & directory creation - 提到nuget路徑的問題,需要透過寫Wizard來解決。SideWaffle有個
SolutionWizard
但是我實際用有錯。