我正在创建一个.tt文件,将文本转换为模型类以进行练习。
生成了一个包含所有模型的.cs文件,但我希望每个模型都保存在自己的.cs文件中,并放置在不同的文件夹中。
如何最好地实现这一点?
生成了一个包含所有模型的.cs文件,但我希望每个模型都保存在自己的.cs文件中,并放置在不同的文件夹中。
如何最好地实现这一点?
SaveOutput
-方法输出文件(Content1.txt,Content2.txt..)会创建到与.tt文件相同的文件夹中,使用SaveOutputToSubFolder
则可以将文件输出到单独的文件夹中(1\Content1.txt, 2\Content2.txt..)。<#@ template debug="false" hostspecific="true" language="C#" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System" #>
<#@ import namespace="System.IO" #>
<#@ output extension=".txt" #>
<#
for (Int32 i = 0; i < 10; ++i) {
#>
File Content <#= i #>
<#
SaveOutput("Content" + i.ToString() + ".txt");
//Uncomment following to write to separate folder 1,2,3
//SaveOutputToSubFolder(i.ToString(),"Content" + i.ToString() + ".txt");
}
#>
<#+
private void SaveOutput(string outputFileName) {
string templateDirectory = Path.GetDirectoryName(Host.TemplateFile);
string outputFilePath = Path.Combine(templateDirectory, outputFileName);
File.WriteAllText(outputFilePath, this.GenerationEnvironment.ToString());
this.GenerationEnvironment.Clear();
}
private void SaveOutputToSubFolder(string folderName, string outputFileName) {
string templateDirectory = Path.GetDirectoryName(Host.TemplateFile);
string newDirectoryName = Path.Combine(templateDirectory,folderName);
if(!Directory.Exists(newDirectoryName))
Directory.CreateDirectory(newDirectoryName);
string outputFilePath = Path.Combine(newDirectoryName, outputFileName);
File.WriteAllText(outputFilePath, this.GenerationEnvironment.ToString());
this.GenerationEnvironment.Clear();
}
#>
this.GenerationEnvironment.Remove(0, this.GenerationEnvironment.Length)
而不是 this.GenerationEnvironment.Clear()
呢?除此之外,这段代码非常棒,我们只需要进行一些小的调整(例如将其输出为 UTF-8)。谢谢! - aolszowka