10

我需要能够在 T4 模板中使用一个类,这两个模板都位于我的解决方案中。我有一个名为Containerin的类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 回答