如何仅在t4生成器中不存在输出文件的情况下创建输出文件
本文关键字:文件 输出 不存在 创建 情况下 何仅 t4 | 更新日期: 2023-09-27 18:00:20
我有一个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生成器删除我的修改,所以我需要在文件存在期间停止生成,这怎么可能?
您可以使用函数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));
您可以参考此示例EDMX文件中的元数据类或数据注释