2012-06-18 14 views
9

T4テンプレート内でクラスを使用できるようにする必要があります。どちらも私のソリューションにあります。 Container.csContainerという名前のクラスがあります。私のテキストテンプレートでは、Containerクラスにアクセスしたいと思っています。どのように私はこれを行うことができます上の任意のアイデア。基本的にはこのような何か:あなたが実際にあなたのテンプレート内のコンテナクラスの機能を使用する必要がある場合、一般的にT4テンプレートの中でクラスを使用する

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

<# var container = new Container() #>

+0

コードを表示してください –

答えて

15

、あなたのプロジェクトがビルドされたアセンブリをロードすることをお勧めします。アセンブリに組み込む予定のコードを再生成するために、アセンブリのビルド版が必要なので、これは循環依存を導入するので注意してください。

あなたはVS2010を使用している場合や、上記の、あなたは次のようなものを使用することができます:

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

してからコンテナクラスを使用します。

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

+2

T4テンプレートの別のオプションは、[File.ReadAllBytes()](http://msdn.microsoft.com/en-us/library/system.io.file.readallbytes.aspx)と[Assembly.Load()](http://msdn.microsoft.com/en-us/library/h538bck7.aspx)メモリにバイト配列。これは修飾されたクラス 'new namespaces.class()'を満たす必要がありますが、毎回Visual Studioを再起動する必要はありません。 –

+0

ありがとう、これは本当に素晴らしい作品です。 – user1396149

関連する問題