2013-03-14 13 views

Antwort

6

Eine Vorlage, bei der hostspecific auf "true" gesetzt ist, kann auf ein Element this.Host vom Typ ITextTemplatingEngineHost (MSDN) zugreifen. Sie können dann z.B. seine Methode "ResolvePath", um Dateien zu finden, die für die Eingabe in die Vorlage benötigt werden.

Dies ist noch nützlicher, wenn Sie eine benutzerdefinierte Templating-Engine verwenden. See Oleg Blog hier: http://www.olegsych.com/2008/02/t4-template-directive/

+0

'Olegsych' Link ist nicht mehr gültig – Tatranskymedved

4

Sie können die ‚this.Host‘ Eigenschaft benutzen, wenn die HostSpecific Flag gesetzt, die vom Typ ITextTemplatingEngineHost ist und ermöglicht es Ihnen, Dateipfad Auflösung unter anderem zu tun.

Wenn Sie jedoch innerhalb von Visual Studio (nicht zur Build-Zeit oder über die Befehlszeile) verwendet werden, können Sie den Host auch in IServiceProvider umwandeln und mit dem globalen Service-Provider von Visual Studio verbunden sein.

Dadurch können Sie alle Visual Studio-APIs verwenden, um Daten für Ihre Vorlage zu finden oder das Projekt, in dem Sie enthalten sind, oder ähnliche Aktionen zu bearbeiten.

Ein Schlüsselszenario, das aktiviert wird, ist die Verwendung des CodeModel (oder bald Roslyn), um Live-Quellcode in Ihrem Projekt zu analysieren und als Quelle für Generierungsmetadaten zu verwenden.