10

T4 テンプレート内でクラスを使用できるようにする必要があり、どちらも私のソリューションに存在します。Containerという名前のクラスがありContainer.csます。私のテキスト テンプレートでは、Containerクラスにアクセスできるようにしたいと考えています。どうすればこれを行うことができるかについてのアイデア。基本的には次のようなものです:

<#@ template language="C#" #>

<# var container = new Container() #>

4

1 に答える 1

16

一般に、テンプレートで Container クラスの機能を実際に使用する必要がある場合は、プロジェクトが構築しているアセンブリを読み込む必要があります。アセンブリに含まれるコードを再生成するには、アセンブリのビルド バージョンが必要なため、循環依存関係が発生します。その点に注意してください。

VS2010 以降を使用している場合は、次のようなものを使用できます。

<#@ assembly name="$(TargetPath)" #>
<#@ import namespace="Your.Namespace" #>

次に Container クラスを使用します。

VS2010SP1 以降を使用している場合、メモリ内のアセンブリをロックしても問題は発生しませんが、それより前の場合は、プロジェクトを再構築する前に、世代ごとに Visual Studio を再起動する必要があります。

于 2012-06-18T22:48:39.600 に答える