0

ランタイムT4テキストテンプレートを使用しています。プリプロセッサで生成されたC#ファイルの出力拡張子が.tt.csであることを望みますが、デフォルトでは、拡張子は.csのみです。これがデザイン時のテキストテンプレートである場合、この動作を強制するために出力拡張ディレクティブを追加できます。ただし、そのようなディレクティブはランタイムテンプレートに影響を与えないようです。ランタイムテンプレートを使用してこれを実現する方法を知っている人はいますか?

<#@ output extension=".tt.cs" #>
4

2 に答える 2

2

簡単な方法はありませんが、それは可能です。

まず、Microsoft.VisualStudio.TextTemplationg.VSHost.10.0.dllのTemplatePreprocessorから派生した独自の単一ファイルジェネレーターを作成し、VisualStudioに登録します。

次に、ProcessTemplate()をオーバーライドし、基本実装を呼び出した後、必要な拡張子を使用してSetFileExtensionを呼び出します。

このような小さな変更では、大変な作業です。

于 2012-06-08T18:49:18.013 に答える
1

I found the following at this link. Might be of use to you as he shows how to set the .cs using a Preprocessed Template but only if you are calling the template from within another template. Haven't found anything showing it's possible if run from in the C# or VB code.

The <#@ output #> directive appears to have no effect on preprocessed templates. No error is generated when a preprocessed template contains this directive. The hosting application is responsible for changing the extension of the output file.

于 2012-06-08T03:26:54.527 に答える