T4模板中的继承



我正试图为我的所有.tt文件创建一个基类,这样我就不必重复我的代码,但我不知道如何让它正常工作。

据我所知,.tt文件中的继承必须从预编译的代码中完成,所以我创建了另一个项目,以便在我的tt项目之前对其进行编译。我尝试了很多事情都没有结果。

这是我的基类BaseClass.cs:

public class BaseClass
{
public virtual void SaveFiles(string[] filePaths)
{
//Do something
}
}

这可能是我想从BaseClass:继承的类之一

<#@ include file="IdentificableDomainEntityTemplate.tt" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ template language="C#" inherits="BaseClass" #>
<#+
public class IdentificableDomainEntitiesGenerator : BaseClass
{
public string AssemblyFile {get; set;}
public string AgentNamespace {get; set;}
public string Namespace {get; set;}
public string EntityName {get; set;}
public List<string> EntitiesToGenerate;
public List<string> ReferencesToGenerate;
public Dictionary<string, List<string>> EntityExceptionsProperties;
public string OutputFolder{get;set;}
public string AddToProject{get;set;}  
public void RunCore()
{
this.SaveFiles(null);       
}
}#>

正如我所说,我已经创建了另一个项目,以便对其进行编译,但我真的不知道还可以尝试什么来继承我的.tt文件中的BaseClass

您需要在T4模板中包含对包含BaseClass类的程序集的引用,如下所示:

<#@ assembly name="AssemblyName.dll" #>

其中";AssemblyName.dll";是包含BaseClass类的程序集的名称。您需要提供DLL的完整路径,或者可以使用Visual Studio宏(如$(ProjectDir)(。

最新更新