Edited at

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

More than 1 year has passed since last update.


はじめに

Visual Studio で、プロジェクト・項目テンプレートを独自に作成するときに、既存のテンプレートを参考にしたい場合があると思います。Visual Studio により提供されるテンプレートの場所を探すのは、意外と面倒です。

そこで、Visual Studio のプロジェクト・項目テンプレートがインストールされているパスを調べるための方法について記載します。


方法

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



  • pkgdef ファイルを作成します



    • 以下のファイルを作成します



      • C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\EnablePkgDefLogging.pkgdef






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

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





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

    devenv /updateConfiguration
    


  • Visual Studio を起動して、新規プロジェクトを作成します(作成するプロジェクトの種類は問いません)


  • プロジェクトに新しい項目を追加します(追加する項目の種類は問いません)



  • 以下の場所に、Visual Studio にインストールされたテンプレートに関するログが CSV ファイルに出力されます


    • %LOCALAPPDATA%\Microsoft\VisualStudio\15.0_[instanceid]\VsTemplateDiagnosticsList.csv


      • [instanceid] は、Visual Studio のインスタンス ID


        • 例の場合は、インスタンス ID "6cbcf19b"

        • %LOCALAPPDATA%\Microsoft\VisualStudio\15.0_6cbcf19b\VsTemplateDiagnosticsList.csv







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



確認


  • 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 で場所を確認すると、ログに出力されている通り、テンプレートのファイルが存在していることが分かります




注意事項

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


参考