Visual Studio 項目模板制作(一)


我們編寫項目的時候,很多時候都是在寫重復代碼,比如一個比較完整的框架,然后下面有很多代碼都是重復的Copy,其實我們可以利用Visual Studio的模板替我們干這些活,我們只要關注項目具體的業務就可以了;

下面我們開始:

1、模板類別

項目模板、項模板

其中,項目模板是創建項目用的,項模板是創建項用的

項目模板:

 

項模板:

 

下面我們創建項目模板

首先,將要制作成模板的項目打開,選中項目,點擊文件-》導出項目模板,彈出導出模板向導

然后填寫相關信息,點擊完成,這樣就導出模板成功了

現在,很關鍵的一步就是修改導出的模板

解壓剛才導出zip文件

打開.vstemplate文件

<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Project">
  <TemplateData>
    <Name>ConsoleApplication2</Name>
    <Description>&lt;沒有可用的說明&gt;</Description>
    <ProjectType>CSharp</ProjectType>
    <ProjectSubType>
    </ProjectSubType>
    <SortOrder>1000</SortOrder>
    <CreateNewFolder>true</CreateNewFolder>
    <DefaultName>ConsoleApplication2</DefaultName>
    <ProvideDefaultName>true</ProvideDefaultName>
    <LocationField>Enabled</LocationField>
    <EnableLocationBrowseButton>true</EnableLocationBrowseButton>
    <Icon>__TemplateIcon.ico</Icon>
  </TemplateData>
  <TemplateContent>
    <Project TargetFileName="ConsoleApplication2.csproj" File="ConsoleApplication2.csproj" ReplaceParameters="true">
      <ProjectItem ReplaceParameters="true" TargetFileName="CodeTimer.cs">CodeTimer.cs</ProjectItem>
      <ProjectItem ReplaceParameters="true" TargetFileName="Program.cs">Program.cs</ProjectItem>
      <Folder Name="Properties" TargetFolderName="Properties">
        <ProjectItem ReplaceParameters="true" TargetFileName="AssemblyInfo.cs">AssemblyInfo.cs</ProjectItem>
      </Folder>
    </Project>
  </TemplateContent>
</VSTemplate>

TemplateData節點是模板的說明,Name:模板名稱,Description:模板描述,ProjectType:項目類型,

 

修改TemplateContext節點

TargetFileName:模板生成的文件名稱 (如:TargetFileName="$safeprojectname$.csproj")

File:模板文件

ReplaceParameters:是否替換占位符,微軟定義的占位符見附錄,當然還可以自定義占位符

 

修改完成之后

<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Project">
  <TemplateData>
    <Name>ConsoleApplication2</Name>
    <Description>&lt;沒有可用的說明&gt;</Description>
    <ProjectType>CSharp</ProjectType>
    <ProjectSubType>
    </ProjectSubType>
    <SortOrder>1000</SortOrder>
    <CreateNewFolder>true</CreateNewFolder>
    <DefaultName>ConsoleApplication2</DefaultName>
    <ProvideDefaultName>true</ProvideDefaultName>
    <LocationField>Enabled</LocationField>
    <EnableLocationBrowseButton>true</EnableLocationBrowseButton>
    <Icon>__TemplateIcon.ico</Icon>
  </TemplateData>
  <TemplateContent>
    <Project TargetFileName="$safeprojectname$.csproj" File="ConsoleApplication2.csproj" ReplaceParameters="true">
      <ProjectItem ReplaceParameters="true" TargetFileName="$safeprojectname$CodeTimer.cs">CodeTimer.cs</ProjectItem>
      <ProjectItem ReplaceParameters="true" TargetFileName="Program.cs">Program.cs</ProjectItem>
      <Folder Name="Properties" TargetFolderName="Properties">
        <ProjectItem ReplaceParameters="true" TargetFileName="AssemblyInfo.cs">AssemblyInfo.cs</ProjectItem>
      </Folder>
    </Project>
  </TemplateContent>
</VSTemplate>

打開用記事本csproj項目文件

修改ItemGroup

  <ItemGroup>
    <Compile Include="$safeprojectname$CodeTimer.cs" />
    <Compile Include="Program.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
  </ItemGroup>

修改完成之后壓縮成Zip文件,放到下面的目錄,在vs里面就可以使用剛才創建的模板了

(vs安裝位置)\Visual Studio 2013\Templates\ProjectTemplates

 

附錄:

 

參數

描述

clrversion

公共語言運行時 (CLR) 的當前版本。

GUID [1-10]

用於替換項目文件中的項目 GUID 的 GUID。 最多可以指定 10 個唯一的 GUID(例如,guid1))。

itemname

用戶在添加新項對話框中提供的名稱。

machinename

當前的計算機名稱(例如,Computer01)。

projectname

用戶在新建項目對話框中提供的名稱。

registeredorganization

HKLM\Software\Microsoft\Windows NT\CurrentVersion\RegisteredOrganization 中的注冊表項值。

rootnamespace

當前項目的根命名空間。 此參數僅適用於項目模板。

safeitemname

用戶在“添加新項”對話框中提供的名稱,名稱中移除了所有不安全的字符和空格。

safeprojectname

用戶在“新建項目”對話框中提供的名稱,名稱中移除了所有不安全的字符和空格。

time

以 DD/MM/YYYY 00:00:00 格式表示的當前時間。

SpecificSolutionName

解決方案的名稱。 當“創建解決方案的目錄”被選中,SpecificSolutionName 具有解決方案的名稱。當“創建解決方案的目錄”沒有被選中,SpecificSolutionName是空。

userdomain

當前的用戶域。

username

當前的用戶名。

webnamespace

當前網站的名稱。 在 Web 窗體模板中使用此參數以確保類名稱是唯一的。 如果網站位於 Web 服務器的根目錄下,則此模板參數將解析為 Web 服務器的根目錄。

year

以 YYYY 格式表示的當前年份。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM