2019年5月26日日曜日

VB テンプレートの活用

プロジェクトの雛形があると便利です。
でも、昔、使ったきりで、 最近は活用していませんでした。
しかし、別のプロジェクトを開き、いちいち、コピペするのは結構大変ですね。
作りましょう!。  自分用の雛形!。


随分と昔ですが、古い Visual Studio 用に、テンプレート を作った記憶があります。
Form の見た目を統一する意味で、したのでした。
でも、Visual Studio も 代が幾つか代わり、最近は、すっかり忘れていました。

コツコツと、別のものを開いては、必要箇所をコピーペーストしています。
はい。  思い出しました!。
昔、テンプレート を作ったよ!。  その手があるじゃぁ無いか!。

プロジェクトの雛形をテンプレートとして独立させるのは、簡単です。
でも、
GUID です。  問題は。


普通に Project を作り、これから、雛形の Template を Wizard に従って生成すると、
同一 GUID の Project が 複数組 生まれる事に繋がります。

勿論、重複を気にするのであれば、
手動で My Project の アセンブリ情報(Y) にある GUI を
ツール(T) > GUID の生成(G) で生成した もの に置き換えれば良いのですが、
面倒ですよね。
第一、忘れて仕舞えば、重複は避けられません。


思い出して下さい。
標準のテンプレート は、そんな面倒な事をせず、自動で 個別の GUID を生成しています。

これと同じ事がしたい!。


はい。  結論 はこれ。
              Visual Studio 2017 (Jp) VB.net での例で。

VB.net であれば、
AssemblyInfo.vb を開き *1 、
所定の箇所を書き換えます。
              *1: Solution Explorere で、全てのファイルを表示 にして
例示ですから、 GUID は 嘘の値 です。  ;)


変更前
'このプロジェクトが COM に公開される場合、次の GUID が typelib の ID になります
<Assembly: Guid("12345678-ABCD-1234-EFGH-1234567890AB")>


変更後  直後に2行追加.
'このプロジェクトが COM に公開される場合、次の GUID が typelib の ID になります
'Template GUID

<Assembly: Guid("12345678-ABCD-1234-EFGH-1234567890AB")>
'When Exporting, Do Active!
'<Assembly: Guid("$guid1$")>

テンプレート用の Project の動作確認や保存時には、
上の変更後の状態にして置きます。

テンプレート の エクスポート時点で、
先ず、

登録時
'Template GUID
'<Assembly: Guid("12345678-ABCD-1234-EFGH-1234567890AB")>
'When Exporting, Do Active!

<Assembly: Guid("$guid1$")>

と、コメントアウトの行を入れ替えて
そのまま、
プロジェクト(P) > テンプレートのエクスポート(E)... と進みます。
保存しますか? と聞かれるので、 はい(Y) をクリックして、
Wizard を進んで下さい。

  はい。  その後の 実際のプロジェクト生成時に $guid1$ の 置換 をさせる訳ですね。.

自動生成後、
テンプレート用の Project のコメントアウトを元(変更後)に戻します。
これで、また、Debug 可能な状態(通常状態)にします。
だって、 テンプレートに盛り込んだパーツの動作を確認したいケースもありますから。


この テンプレート を使って、新 Project を生成すれば、
毎回、別の GUID を持つものが生まれます。   $guid1$ の 置換 .

安定したテンプレートが出来て仕舞えば、それ用の Project は不要です。
削除して仕舞っても OK ですね。



さて、それでは、ファイル .zip を移動して置きましょう。
移動先は、利用言語やカテゴリに応じて、以下の場所です。

   msdn で質問し、MVP の gekka さまにご回答戴きました。  gekka さまに感謝!
   VS ユーザー作成 Project Template の <ProjectSubType> に関して  

例:
Visual Basic > Windows デスクトップ なら、

Wizard 自動生成先。
%USERPROFILE%\Documents\Visual Studio 2017\My Exported Templates


移動先。  \Windows を新設
%USERPROFILE%\Documents\Visual Studio 2017\Templates\ProjectTemplates\Visual Basic\Windows

Wizard から自動生成された .zip そのまま を移動。
???Template.vstemplate ファイルの <ProjectSubType> はデータ無しのまま。  編集は不要。.

尚、
Visual Basic > Windows デスクトップ と、Visual Basic と、2箇所に表示させるなら、
ファイルコピーの手もあります。
例:
  cmd.exe  同一ドライブ上に居るとして ハードリンク生成。 実体はひとつ。
cd %USERPROFILE%\Documents\Visual Studio 2017\Templates\ProjectTemplates\Visual Basic
mklink /H ???Template.zip Windows\???Template.zip



これで、少しは、楽 が出来るかな ... 。



[2019/05/29] 若干の追記

0 件のコメント:

コメントを投稿