最初のビジュアルスタジオプロジェクトテンプレート(手作り作成)

7420 ワード

今はプロジェクトテンプレートを手作りで作成し、配置と使用の問題を検討します.ここでは前の最初に準備したテンプレートソースを使用します.
1,テンプレートメタデータファイルを認識します.
テンプレートのメタデータファイルのフォーマットについて、MSDNは詳細に説明しています.この二つのリンクを参照してください. Visual Studio Template Metadata Files:http://msdn.microsoft.com/en-us/library/xsxc3ete.aspx Visual Studio Template Schema Reference:http://msdn.microsoft.com/en-us/library/xwkxbww4.aspx テンプレートのSchemaはまだ複雑です.だから、ここでは私たちの例に関わる常用ノードだけを紹介します.ちなみに、テンプレートのメタデータも自分のXSD検証ファイルがあります.デフォルトの位置は以下の通りです. C:\Program Files\Microsoft Visual Studio 10.0\xml\Schemas\1033\vstemple.xsd Visual Studioを利用してこのXSDを開けば、メタデータのフォーマット要求を視覚的に見ることができます.
2、手作りで多項目テンプレートを作成する最適な実践の一つ.
まず、ここで私が組織している例示的な構造は最適化された方案であり、最適な実践の一つと見なされます.
私たちは一つのファイルを使って私たちのプロジェクトファイルとして整理していますが、実際にプロジェクトテンプレートのZIPパッケージは不要です.もちろんこのようにしても、欠点とは言えない小さな欠点があります.後にします.
もちろん、ここで見たのは実際の物理構造ではありません.物理ファイル構造は下図を参照してください.
この論理構造を整えたら、あとはプロジェクトテンプレートの内容の方面に連絡します.
TwoLayer Template.vstemplateコード: 
<?xml version="1.0" encoding="utf-8"?>
<VSTemplate xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Version="3.0.0" Type="ProjectGroup">
  <TemplateData>
    <Name>Two Layer Web Application</Name>
    <Description>Provide a two layer solution for web development</Description>
    <ProjectType>CSharp</ProjectType>
    <Icon>TwoLayerTemplateIcon.png</Icon>
    <PreviewImage>TwoLayerTemplatePreview.png</PreviewImage>
    <DefaultName>TwoLayerWebApp</DefaultName>
  </TemplateData>
  <TemplateContent>
    <ProjectCollection>
      <ProjectTemplateLink ProjectName="WebClient">WebClient\WebClient.vstemplate</ProjectTemplateLink>
      <ProjectTemplateLink ProjectName="DataService">DataService\DataService.vstemplate</ProjectTemplateLink>
    </ProjectCollection>
  </TemplateContent>
</VSTemplate>
 
WebCient.vstemplateコード: 
<?xml version="1.0" encoding="utf-8"?>
<VSTemplate xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Version="3.0.0" Type="Project">
  <TemplateData>
    <Name>WebClient</Name>
    <ProjectType>CSharp</ProjectType>
  </TemplateData>
  <TemplateContent>
    <Project File="WebClient.csproj">
      <ProjectItem>Properties\AssemblyInfo.cs</ProjectItem>
      <ProjectItem>Default.aspx</ProjectItem>
      <ProjectItem>Default.aspx.cs</ProjectItem>
      <ProjectItem>Default.aspx.designer.cs</ProjectItem>
      <ProjectItem>Web.config</ProjectItem>
    </Project>
  </TemplateContent>
</VSTemplate>
 
DataService.vstemaplateコード: 
<?xml version="1.0" encoding="utf-8"?>
<VSTemplate xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Version="3.0.0" Type="Project">
  <TemplateData>
    <Name>DataService</Name>
    <ProjectType>CSharp</ProjectType>
  </TemplateData>
  <TemplateContent>
    <Project File="DataService.csproj">
      <ProjectItem>Properties\AssemblyInfo.cs</ProjectItem>
      <ProjectItem>DataService.cs</ProjectItem>
    </Project>
  </TemplateContent>
</VSTemplate>
 
各vstemplateメタデータファイルは、1つの<VSTTemplate>ルートノードと、<TemplateData>と<TemplateContott>の2つのサブノードを含む.
1)VSTTemplateルートノードには2つの属性があります. Version属性:テンプレートのバージョンを指定するために、MSDN参照によると、VSS 2010は3.000を使用します. Type属性:テンプレートのターゲットタイプを指定するために使用される3つの値:Item、Project、Project Group.このうちItemはプロジェクトテンプレート、Projectはプロジェクトテンプレート、Project Groupはプロジェクトテンプレートを表します.
2)TemplateDataノードはテンプレート自体の情報を整理して、「新規プロジェクト」ダイアログに表示されるメタデータを提供しています.これらの表示のポイントは前のページのスクリーンショットで見られますが、実はこれらの内容は大多和プロジェクトガイドが情報を記入するステップで行うことがほとんどです.ここではDefault Name属性など、より多くのことができます.新規プロジェクトダイアログの名前として使用できるデフォルト値を指定します.実際にデフォルトで表示されるのは「DefaultName」+N形式です.
3)TemplateContottの主要ノードはテンプレートのソースを組織するために用いられています.ここでは「Twolayer Template.vstemplate」と「WebClient.vstemplate」、「DataService.vstemplate」の関係を説明しなければなりません.
ここで、私は個人的に新しい概念の「ルートテンプレートメタデータファイル」を定義します.このメタデータ構造は特殊で、個々のプロジェクトの「テンプレートメタデータファイル」をインデックスするために用いられます.個人的にもそれに新しい概念の「サブテンプレートメタデータファイル」を与えます.ここの「TwoLayer Template.vstemplate」はこのルートファイルです.Project Collectionは、TemplateContentのサブノードとして、Project TemplateLinkのセットを保存するために使用され、Project TemplateLinkは名前の通り、リンクだけで、他の2つのサブテンプレートのメタデータファイルにリンクされます.多項目テンプレートに含まれている実際のサブプロジェクトは、異なるプログラミング言語項目でもありますが、全体の多項目テンプレートには、1つの合計のカテゴリしかありません.ルートテンプレートのメタデータファイルのTemplateDataの下にあるProjectType属性が指定されています.
Project TemplateLinkのプロパティProjectNameを提示したいのですが、プロジェクトテンプレートの最終プロジェクト名は「新規プロジェクト」ダイアログで指定されています.しかし、複数のプロジェクトテンプレートの各サブプロジェクトは、最終プロジェクト名が一つ一つ指定されることは不可能です.ここで直接にこの属性で指定します.
また、他の2つの「サブテンプレートメタデータファイル」については、それらのTemplateContottノードの構成方法は同じであり、Projectノードは「テンプレートソース」のcsprojファイルを参照し、Project Itemサブノードはこのプロジェクトで援用されたすべてのソースファイルをインデックスするために使用しています.
ここで、このプロジェクトのテンプレートに関する内容の論理構造を以下の図で表すことができる.
この時、私達は概念上のプロジェクトテンプレートからまだ一歩足りません.包装は簡単です.包装する内容を選んで、圧縮フォルダに送ればいいです.ここでTwoLayer Template.slonファイルを排除しました.これは私が第2歩で言及した「小さな欠点」です.このファイルはプロジェクトテンプレートには必要ないです.もちろん、誤ってカバンの中に入れたら、Workingもできます.
3,配置と使用効果.
ここの「多項目テンプレート」で「ルートテンプレートメタデータファイル」で定義されているProjectTypeはCSharpですので、私達が展開する時は下記のディレクトリに入れます. C:\Users\\Doccuments\Visual Studio 2010\Templates\Project Templates\Visual C咻
さもなくば、「新規プロジェクト」ダイアログの種類には、テンプレートが見当たらなくなります.効果を見てみます.
名前空間ファイル構造を確認して、テンプレートの適用性を確認できます.もちろんです.ここで挙げたのは簡単な例です.適用されるプロジェクトのテンプレートは複雑かもしれません.カスタマイズの度合いはもっと高いです.次の編は引き続き検討します.
 
抜粋:http://www.ethan-woo.com/post/2011/04/24/First-VisualStudio-Template-Manually.aspx