我正在VS 2015中编写一个T4模板来生成一些C#存储库类。该模板运行良好,并为我提供了我们想要的每个类.gen.cs。但它也会产生一个空白的.cs。 我正试图弄清楚如何让它不生成额外的.cs文件。
所以,如果我有OrderRepositories.tt,我会得到:
OrderRepository.gen.cs
OrderItemRepository.gen.cs
OrderRepositories.cs
- 除非模板错误
如何跳过那个空的.cs文件? (如果我在下面没有提供足够的信息,请发表评论。)
这是.tt文件的include部分:
<#@ template language="C#" debug="True" #>
<#@ include file="T4Toolbox.tt" #>
<#@ import namespace="System" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="System.Reflection" #>
这是.tt文件中的主要方法:
public void RunTemplate()
{
var types = GetTypesInNamespace(assembly, nameSpace);
foreach (var type in types) {
var fileName = string.Format(@"{0}Repository.gen.cs", type.Name);
var name = type.Name;
var repoTemplate = new RepositoryTemplate(fileName, repositoryNamespace, type.Namespace, name, dbContextName, dbContextNamespace, type);
repoTemplate.RenderToFile(fileName);
}
}
.tt文件的模板部分:
<#+
private class RepositoryTemplate : Template {
public RepositoryTemplate(string fileName, string repoNameSpace, string typeNameSpace, string name, string dbContextName, string dbContextNamespace, Type thisType)
{
_fileName = fileName;
_repoNameSpace = repoNameSpace;
// ...
}
public override string TransformText()
{
using System;
using System.Data;
namespace <#= _repoNameSpace #>
{
public partial interface I<#= _name #>Repository : IBaseRepository<<#= _name #>>
{
}
public partial class <#= _name #>Repository : BaseRepository<<#= _name #>>, I<#= _name #>Repository
{
public <#= _name #>Repository() : base("Order")
{
}
// ... other code
}
}
<#+
return this.GenerationEnvironment.ToString();
}
}#>