Visual Studio テンプレートを作成する。 - プロジェクト テンプレート編 - その1。
その1で作成したプロジェクト テンプレートの中身を見てみます。出力されたテンプレートは私の環境では
C:\Documents and Settings\[ユーザー名]\My Documents\Visual Studio 2005\My Exported Templates\TorikoWindowsApplication.zip
です。含まれる内容は以下のとおり。
    - My Project (フォルダ)
        
            - Application.Designer.vb (ファイル)
 
            - Application.myapp (ファイル)
 
            - AssemblyInfo.vb (ファイル)
 
            - Resources.Designer.vb (ファイル)
 
            - Resources.resx (ファイル)
 
            - Settings.Designer.vb (ファイル)
 
            - Settings.settings (ファイル)
 
        
 
     
    - __TemplateIcon.ico (ファイル)
 
    - Form1.Designer.vb (ファイル)
 
    - Form1.vb (ファイル)
 
   - MyTemplate.vstemplate (ファイル)
 
   - Program.vb (ファイル)
 
   - TorikoWindowsApplication.vbproj (ファイル)
  
   - bin (フォルダ)
 
   - obj (フォルダ)
 
ざっと見渡す限り、テンプレートに使用するプロジェクトの内容と、MyTemplate.vstemplate という構成になっています。これらの情報からVisual
    Studio はプロジェクトを作成しているようですね。じゃ、プロジェクトの内容は前回作った内容のままでしょうか?念のため見てみます。TorikoWindowsApplication.vbproj
    というプロジェクトファイルを開いてみましょう。
   うむ、ちゃんと Program.vb も含まれていて、Sub Main がスタートアップオブジェクトになってますね♪・・・って、あれ?このプロジェクト
   エラーが出てるよ・・・。
 
   こんな内容になってます。
   
   
   - プロパティ 'RootNamespace' の読み込みに失敗しました。ルート名前空間の文字列は有効な識別子でなければなりません。
 
   - '$safeprojectname$' は有効な名前ではありません。ルートの名前空間名として使用できません。
 
   - 文字が有効ではありません。
 
   
   
   ※ このあたりが後々ボディブローのように効いてくるんですが、今回は深くは触れません。
   気持ちを前向きにしてこのテンプレート、なにがどうなっているかゴソゴソ調べてみますと、プロジェクトのプロパティのアプリケーションタブの[アセンブリ名]のところ、なんか変ですよね。'$safeprojectname$' ってなってます。せーふぷろじぇくとねーむ?こんなの指定した覚えはありません。いろいろ見てみると他の場所でも '$'で挟まれた文字列がいくつかできていますね。
   これについて調べてきました。ちゃんとあります、MSDNに。
   MSDN:テンプレート名(http://msdn2.microsoft.com/ja-jp/library/eehb4faa(VS.80).aspx)
   
すべてのテンプレートはパラメータ置換をサポートしており、テンプレートをインスタンス化するときに、クラス名や名前空間などの重要なパラメータを置換できます。[新しいプロジェクト] ダイアログ ボックスおよび [新しい項目の追加] ダイアログ ボックスで [OK] をクリックすると、これらのパラメータはバックグラウンドで実行されているテンプレート ウィザードによって置き換えられます。
   つまりこのパラメータ置換機能によって[新しいプロジェクト] ダイアログ ボックスで指定したプロジェクト名がここに出力されるわけですね。(正確には、'$safeprojectname$' は [新しいプロジェクト] ダイアログ ボックスでユーザーが指定した名前から、安全でないすべての文字とスペースを削除したものが出力されます。)
   
   パラメータ置換を使用すれば、かちかちに指定されたテンプレートをパラメータで柔軟にカスタマイズできそうですね。とはいえ、もう少し必要事項がありますので次回に続きます。