在T4模板中使用class

时间:2012-06-18 07:58:11

标签: c# t4

我需要能够在T4模板中使用一个类,这两个类都驻留在我的解决方案中。我在Container中有一个名为Container.cs的班级。在我的文本模板中,我希望能够访问Container类。关于我该怎么做的任何想法。基本上是这样的:

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

<# var container = new Container() #>

1 个答案:

答案 0 :(得分:15)

通常,如果您需要在模板中实际使用Container类的功能,则需要加载项目正在构建的程序集。这确实引入了循环依赖,因为您需要构建版本的程序集才能重新生成将包含在该程序集中的代码,因此请注意这一点。

如果您使用的是VS2010或更高版本,您将可以使用以下内容:

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

然后使用您的Container类。

如果您有VS2010SP1或更高版本,这将导致您没有在内存中锁定该程序集的问题,但如果您早于此,那么您必须在每一代之后重新启动Visual Studio,然后才能重建项目