文章出處

作為這個星球上最強大的IDE,Visual Studio不僅僅提供了很多原生的特性,更重要的是它是一個可定制的IDE,比如自定義Project Template和Item Template就是一個非常有用的擴展點。這里我們主要關注Item Template,它時我們可以在“Add new Item”對話框中添加我們自定義的Item(如下圖所示)。如果不了解Item Template,Scott Gu的文章

image

我們之前自定義了一些Item Template,最近想在.NET Core項目中使用它們,但是失敗了。今天為了這個折騰得夠嗆,不過好在最后還是解決了——雖然解決方案僅僅是添加一行代碼。

如果不了解Item Template定義文件的Schema,定義Item Template最簡單的方式就是直接利用VS創建一個對應的項目。由于我們是針對.NET Core項目提供的Item Template,所以我們創建了一個.NET Core類庫項目。作為演示,我們在項目中添加了如下一個Foobar.cs文件作為這個Item Template為目標項目添加的Item。

image

按照慣例,我們只需要選擇菜單File->Export Template打開如下Template的導出向導。我們選擇Item Template選項后進入下一步。

image

由于我們只要利用Item Template為目標添加Foobar.cs這個文件,所以我們只需選擇這個文件即可。

image

選擇默認選項知道完成向導,作為一個.zip文件將會出現在目錄“%userprofile%Documents\Visual Studio 2015\My Exported Templates”目錄下。

image

按照慣例,我們只需要將這個zip文件拷貝到%userprofile%Documents\Visual Studio 2015\Templates\ItemTemplates\.NET Core“目錄下就可以了。但是為.NET Core項目添加Item的時候并沒有看到它。

image

為此我們解壓縮這個文件,查看它的”MyTemplate.vstemplate“文件,如下所示的就是該文件的內容。主要關注代表項目類型的<ProjectType>元素,我們看到它的值為 DNX。有人可能認為DNX是錯誤的項目類型,雖然DNX已經是個歷史名次,但是VS目前依然使用它來表示.NET Core。

   1: <VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Item">
   2:   <TemplateData>
   3:     <DefaultName>MyItem.cs</DefaultName>
   4:     <Name>MyItem</Name>
   5:     <Description>&lt;No description available&gt;</Description>
   6:     <ProjectType>DNX</ProjectType>
   7:     <SortOrder>10</SortOrder>
   8:     <Icon>__TemplateIcon.ico</Icon>
   9:   </TemplateData>
  10:   <TemplateContent>
  11:     <References />
  12:     <ProjectItem SubType="" TargetFileName="$fileinputname$.cs" ReplaceParameters="true">Foobar.cs</ProjectItem>
  13:   </TemplateContent>
  14: </VSTemplate>

實際上除了需要制定<ProjectType>之外,我們還需要指定TemplateGroupID,并且將值設定為“SharedDotNetAndDotNetWeb”(表示普通的.NET Core類庫項目和Web項目都適用)

   1: <VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Item">
   2:   <TemplateData>
   3:     <DefaultName>MyItem.cs</DefaultName>
   4:     <Name>MyItem</Name>
   5:     <Description>&lt;No description available&gt;</Description>
   6:     <ProjectType>DNX</ProjectType>
   7:     <TemplateGroupID>SharedDotNetAndDotNetWeb</TemplateGroupID>
   8:     <SortOrder>10</SortOrder>
   9:     <Icon>__TemplateIcon.ico</Icon>
  10:   </TemplateData>
  11:   <TemplateContent>
  12:     <References />
  13:     <ProjectItem SubType="" TargetFileName="$fileinputname$.cs" ReplaceParameters="true">Foobar.cs</ProjectItem>
  14:   </TemplateContent>
  15: </VSTemplate>
然后我們重新壓縮打包并部署,

image


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()