如果只在t4生成器中不存在输出文件,如何创建输出文件?

时间:2014-04-26 05:42:56

标签: c# t4

我有一个如下的T4生成器:

<#@ template language="C#" debug="false" hostspecific="true"#>
<#@ include file="EF6.Utility.CS.ttinclude"#>
<#@ import namespace="System.IO" #><#@ 
 output extension=".cs"#>
<#foreach (var entity in typeMapper.GetItemsToGenerate<EntityType>(itemCollection))
{
    var fileName = entity.Name + "Controller.cs";
    fileManager.StartNewFile(fileName);
}#>

我不希望T4生成器删除我的修改,所以我需要在文件存在期间停止生成怎么可能?

1 个答案:

答案 0 :(得分:0)

您可以使用功能DoesFileExist并在创建新文件时检查。如果它已经存在,那么您可以使用OutputFile

编写相同的文本(现有文件)
// Check for file existence
bool DoesFileExist(string filename)
{            
    return File.Exists(Path.Combine(GetCurrentDirectory(),filename));    
}
// Get current  folder directory
string GetCurrentDirectory()
{
    return System.IO.Path.GetDirectoryName(Host.TemplateFile);
}
// Get content of file name
string OutputFile(string filename)
{
    using(StreamReader sr = 
      new StreamReader(Path.Combine(GetCurrentDirectory(),filename)))
    {
        return sr.ReadToEnd();
    }
}

写同一个文件:

// Write with original file
fileManager.StartNewFile(fileName);
this.Write(OutputFile(fileName));

您可以参考此示例Metadata Class or Data Annotation from EDMX Files