我需要能够在T4模板中使用一个与其在同一解决方案中的类,这个类名为Container
,定义在Container.cs
文件中。在文本模板中,我想要访问Container
类。有没有什么想法可以实现这个需求?基本上就像这样:
<#@ template language="C#" #>
<# var container = new Container() #>
通常情况下,如果你需要在模板中使用Container类的功能,你需要加载你的项目正在构建的程序集。这会引入一个循环依赖,因为你需要已经构建好的程序集来重新生成将包含在该程序集中的代码,所以请注意此点。
如果你正在使用VS2010或以上版本,则可以使用如下方法:
<#@ assembly name="$(TargetPath)" #>
<#@ import namespace="Your.Namespace" #>
然后使用您的 Container 类。
如果您使用的是 VS2010SP1 及以上版本,则不会有锁定该程序集在内存中的问题,但是如果您使用的是更早的版本,则必须在每次生成后重新启动 Visual Studio 才能重新构建项目。
new namespaces.class()
,但意味着您不必每次都重新启动Visual Studio。 - Erik Philips