我正试图为我的所有.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)
(。