tafuji's blog

C#, Xamarin, Azure DevOps を中心に書いています。

Visual Studio 2017 のプロジェクト・項目テンプレートがインストールされている場所を調べる方法

Qiita より転載

はじめに

Visual Studio で、プロジェクト・項目テンプレートを独自に作成するときに、既存のテンプレートを参考にしたい場合があると思います。Visual Studio により提供されるテンプレートの場所を探すのは、意外と面倒です。 そこで、Visual Studio のプロジェクト・項目テンプレートがインストールされているパスを調べるための方法について記載します。

方法

Visual Studio では、診断用のログを出力する機能が実装されています。この設定は既定では OFF にされていますが、以下の手順で設定を行うことにより、テンプレートの診断ログを CSV ファイルに出力することができます。

  • pkgdef ファイルを作成します
    • 以下のファイルを作成します
    • ファイルに以下の内容を記述してください

      [$RootKey$\VsTemplate] "EnableTemplateDiscoveryLog"=dword:00000001

  • 「Developer Command Prompt for VS2007」で以下のコマンドを実行します

    devenv /updateConfiguration

  • Visual Studio を起動して、新規プロジェクトを作成します(作成するプロジェクトの種類は問いません)
  • プロジェクトに新しい項目を追加します(追加する項目の種類は問いません)
  • 以下の場所に、Visual Studio にインストールされたテンプレートに関するログが CSV ファイルに出力されます

    CSV File Path

  • CSV を開くと、プロジェクト・項目テンプレートのインストールフォルダが出力されていることがわかります

CSV File Contents

確認

  • CSV の項目は、以下の順番で値が出力されています
    • テンプレートのフルパス
    • テンプレートがどのようにデプロイされたかのフラグ(0 と 1 の値をとるようですが、何が違うのかは、よくわかりませんでした)
    • テンプレートのファイル名(フルパスからの相対パスが出力されているようです)
    • その他のプロパティ
  • Xamarin.Forms の Master Detail テンプレートの場合

    項目
    テンプレートのパス C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO\2017\ENTERPRISE\Common7\IDE\EXTENSIONS\XAMARIN.FORMS\T\P
    テンプレートのファイル名 \CSharp\Cross-Platform\MasterDetail.NoAzure.PCL.zip
C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO\2017\ENTERPRISE\Common7\IDE\EXTENSIONS\XAMARIN.FORMS\T\P,0,\CSharp\Cross-Platform\MasterDetail.NoAzure.PCL.zip,CSharp\Cross-Platform\MasterDetail.NoAzure.PCL.zip\MasterDetail.NoAzure.PCL.vstemplate,3.0.0,ProjectGroup,Xamarin.Forms.MasterDetail.NoAzure.PCL,,CSharp,,CSharp\Cross-Platform\MasterDetail.NoAzure.PCL.zip\MasterDetail.NoAzure.PCL.vstemplate,0,
  • Explorer で場所を確認すると、ログに出力されている通り、テンプレートのファイルが存在していることが分かります

    Xamarin.Forms Template

注意事項

テンプレートの場所が分かったら、EnablePkgDefLogging.pkgdef ファイルを削除するか、値を dword:00000000 に修正して、devenv /updateConfiguration コマンドを再度実行して、診断ログの出力を無効にしておきましょう。

参考