自訂的 MVC 範本

作者 :Jacques Eloff

Visual Studio 2010 的 MVC 3 工具更新版本引進了適用于 MVC 專案的個別專案精靈。 變更是由兩個因素所驅動。 首先,在 MVC 3 中引進新的範本,並支援其他檢視引擎,例如 Razor 會導致 Visual Studio 中的 [新增專案] 對話方塊超載。 其次,客戶已要求擴充點,而新的 MVC 專案精靈可讓我們有機會回應這些要求。

新增自訂範本是一種繁重的程式,依賴使用登錄,讓 MVC 專案精靈能夠看見新的範本。 新範本的作者必須將它包裝在 MSI 內,以確保在安裝時會建立必要的登錄專案。 替代方法是讓包含範本的 ZIP 檔案可供使用,並讓使用者手動建立必要的登錄專案。

上述兩種方法都不是理想的方法,因此我們決定利用 VSIX 延伸模組所提供的一些現有基礎結構,以便更輕鬆地撰寫、散發及安裝 Visual Studio 2012 版 MVC 4 的自訂 MVC 範本。 此方法所提供的一些優點包括:

  • VSIX 擴充功能可以包含多個範本,可支援不同語言 (C# 和 Visual Basic) 和多個檢視引擎, (ASPX 和 Razor) 。
  • VSIX 擴充功能可以鎖定 Visual Studio 的多個 SKU,包括 Express SKU。
  • Visual Studio 資源庫有助於將延伸模組散發給廣大物件。
  • VSIX 延伸模組可以升級,讓您更輕鬆地撰寫自訂範本的更正和更新。

必要條件

  • 使用者必須熟悉撰寫專案範本,包括 vstemplate 檔案的必要標記等等。
  • 使用者必須安裝Visual Studio Professional及更新版本。 Express SKU 不支援建立 VSIX 專案。
  • 已安裝Visual Studio 2012 SDK

範例

第一個步驟是使用 C# 或 Visual Basic 建立新的 VSIX 專案。 選取 [檔案 > 新增專案],然後按一下左窗格中的 [擴充性] ,然後選取 VSIX 專案

新增專案

建立專案之後,將會開啟 VSIX 設計工具。

專案Designer中繼資料

設計工具可用來編輯擴充功能的一些一般屬性,這些擴充功能會在使用者安裝延伸模組時顯示,或在 Visual Studio (Tools > Extensions 中流覽已安裝的延伸模組,以及更新) 。 完成一般資訊之後,請按一下 [ 安裝目標] 索引標籤

此螢幕擷取畫面顯示 [專案Designer的 [安裝目標] 索引標籤。

此索引標籤可用來指定延伸模組所支援的 Visual Studio SKU 和版本。 選取 [此 VSIX 已安裝此 VSIX] 核取方塊,讓所有使用者啟用 VSIX 的每部電腦安裝。 按一下右側的 [ 新增 ] 按鈕,以新增其他 SKU,例如 Web Developer Express (VWD) 。

新增安裝目標

如果您想要支援專業版和更高 SKU (Professional、Premium 和 Ultimate) 您只需要選取系列中的最低SKU Microsoft.VisualStudio.Pro。 當您完成安裝目標之後,請記得儲存所有變更。

此螢幕擷取畫面顯示 [專案Designer的 [安裝目標] 索引標籤,其中包含指定的識別碼和版本範圍。

[ 資產 ] 索引標籤用來將所有內容檔案新增至 VSIX。 由於 MVC 需要自訂中繼資料,因此您將編輯 VSIX 資訊清單檔的原始 XML,而不是使用 [ 資產 ] 索引標籤來新增內容。 首先,將範本內容新增至 VSIX 專案。 資料夾的結構和內容必須反映專案的版面配置。 下列範例包含四個衍生自基本 MVC 專案範本的專案範本。 請確定組成專案範本的所有檔案 (ProjectTemplates 資料夾底下的所有檔案) 都會新增至 VSIX 專案檔中的 Content 專案群組,而且每個專案都包含 CopyToOutputDirectoryIncludeInVsix 元資料集,如下列範例所示。

<Content Include=「ProjectTemplates\MyMvcWebApplicationProjectTemplate.csaspx\BasicWeb.config」>

<CopyToOutputDirectory > Always < /CopyToOutputDirectory>

<IncludeInVSIX > true < /IncludeInVSIX>

</內容>

如果沒有,IDE 會在建置 VSIX 時嘗試編譯範本的內容,而且您可能會看到錯誤。 範本中的程式碼檔案通常包含 Visual Studio 在專案範本具現化時所使用的特殊 範本參數 ,因此無法在 IDE 中編譯。

方案總管

關閉 VSIX 設計工具,然後在方案總管中的source.extension.manifest檔案上按一下滑鼠右鍵,然後選取 [開啟方式],然後選擇 [XML (Text) Editor] 選項。

開啟對話方塊

建立< Assets >元素,並為必須包含在 VSIX 中的每個檔案新增< Asset >元素。 每個< Asset >元素的Type屬性都必須設定為Microsoft.VisualStudio.Mvc.Template。 這是只有 MVC 專案精靈瞭解的自訂命名空間。 如需資訊清單檔結構和配置的詳細資訊,請參閱 VSIX 2.0 架構檔。

只要將檔案新增至 VSIX 就不足以向 MVC 精靈註冊範本。 您必須將範本名稱、描述、支援的檢視引擎和支援的檢視引擎和程式設計語言等資訊提供給 MVC 精靈。 這項資訊會包含在與每個vstemplate檔案之Asset > 元素相關聯的 <自訂屬性中。

<Asset d:VsixSubPath=「ProjectTemplates\MyMvcWebApplicationProjectTemplate.csaspx」

Type=「Microsoft.VisualStudio.Mvc.Template」

d:Source=「File」

Path=「ProjectTemplates\MyMvcWebApplicationProjectTemplate.csaspx\BasicMvcWebApplicationProjectTemplate.11.csaspx.vstemplate」

ProjectType=「MVC」

Language=「C#」

ViewEngine=「Aspx」

TemplateId=「MyMvcApplication」

Title=「Custom Basic Web Application」

Description=「衍生自基本 MVC Web 應用程式 (Razor) 」

Version=「4.0」/>

以下是必須存在之自訂屬性的說明:

  • ProjectType 必須設定為 MVC。
  • 語言 會指定範本所支援的開發語言。 有效值為 C# 或 VB。
  • ViewEngine 會指定範本支援的檢視引擎,例如 Aspx 或 Razor。 您可以為此欄位指定自訂值。
  • TemplateId 用於群組範本。 如果值符合現有的範本識別碼,則會覆寫先前向 MVC 精靈註冊的範本。
  • 標題 會指定每個專案範本下方 MVC 精靈中顯示的簡短描述。
  • 描述 會指定範本更詳細的描述。

將所有檔案新增至資訊清單並儲存之後,您會發現設計工具中的 [資產] 索引標籤會顯示所有檔案,但不會顯示您新增至< vstemplate 檔案之 Asset >元素的自訂屬性。

專案Designer資產

現在剩下的就是編譯 VSIX 專案並加以安裝。

請確定您想要測試 VSIX 擴充功能的電腦上關閉所有 Visual Studio 實例。 Visual Studio 會在啟動時掃描是否有新的擴充功能,因此,如果在安裝 VSIX 時開啟 IDE,您必須重新開機 Visual Studio。 在 [總管] 中,按兩下 VSIX 檔案以啟動 VSIX 安裝程式,按一下 [ 安裝 ],然後啟動 Visual Studio。

VSIX 安裝程式

從功能表中,選取 [工具 > 擴充功能和更新],以確認您的擴充功能已安裝。 如果 VSIX 安裝程式在安裝擴充功能期間回報了任何錯誤,您可以檢視 VSIX 安裝程式記錄檔以取得詳細資訊。 記錄通常會建立在安裝延伸模組之使用者的 %temp% 資料夾中,例如 C:\Users\Bob\AppData\Local\Temp

擴充功能和更新

關閉視窗之後,您可以建立 MVC 4 專案,以查看您的新範本是否顯示在 MVC 精靈中。

新的 ASP.NET MVC 4 專案

限制

  1. MVC 精靈不支援當地語系化的自訂範本。
  2. 如果無法找到自訂範本,精靈將不會回報任何錯誤。 如果沒有任何必要的自訂屬性,範本只會從精靈中排除。