<#@ template debug="false" hostspecific="false" language="C#" #>
ここでホスト固有の属性は何を意味しますか。
<#@ template debug="false" hostspecific="false" language="C#" #>
ここでホスト固有の属性は何を意味しますか。
ホスト固有が「true」に設定されたテンプレートはthis.Host
、型ITextTemplatingEngineHost
( MSDN ) のメンバーにアクセスできます。次に、たとえばそのメソッド「ResolvePath」を使用して、テンプレートへの入力に必要なファイルを見つけることができます。
これは、カスタム テンプレート エンジンを使用する場合にさらに便利です。ここで Oleg のブログを参照してください: http://www.olegsych.com/2008/02/t4-template-directive/
HostSpecific フラグが設定されると、「this.Host」プロパティを使用できます。これは ITextTemplatingEngineHost 型であり、特にファイル パスの解決を行うことができます。
ただし、(ビルド時またはコマンド ラインからではなく) Visual Studio 内で使用する場合は、ホストを IServiceProvider にキャストして、Visual Studio のグローバル サービス プロバイダーに接続することもできます。
これにより、Visual Studio の API のいずれかを使用して、テンプレートのデータを検索したり、含まれているプロジェクトを操作したり、同様のアクションを実行したりできます。
これにより可能になる重要なシナリオは、CodeModel (または間もなく Roslyn) を使用してプロジェクト内のライブ ソース コードを解析し、それを生成メタデータのソースとして使用することです。