C# 为什么我的Visual Studio T4代码输出错误?
下面的说明 我试图将var personName从test1.tt传递到template1.tt,但看不到任何文件。为什么 模板1.ttC# 为什么我的Visual Studio T4代码输出错误?,c#,visual-studio,t4,C#,Visual Studio,T4,下面的说明 我试图将var personName从test1.tt传递到template1.tt,但看不到任何文件。为什么 模板1.tt <#@ template debug="false" hostspecific="true" language="C#" #> <#@ import namespace="System.IO" #> <#@ output extension=".txt" #> <#@ assembly name="System"#&g
<#@ template debug="false" hostspecific="true" language="C#" #>
<#@ import namespace="System.IO" #>
<#@ output extension=".txt" #>
<#@ assembly name="System"#>
hello <#= personName #>
你好
test1.tt
<#@ template language="C#" hostspecific="True" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="Microsoft.VisualStudio.TextTemplating" #>
<#@ import namespace="System.Runtime.Remoting.Messaging" #>
CallContext.SetData("template1.personName", "Baby");
ProcessTemplate("template1.tt","testoutput.txt");
<#+
void ProcessTemplate(string templateFileName, string outputFileName) {
string templateDirectory = Path.GetDirectoryName(Host.TemplateFile);
string outputFilePath = Path.Combine(templateDirectory, outputFileName);
string template = File.ReadAllText(Host.ResolvePath(templateFileName));
Engine engine = new Engine();
string output = engine.ProcessTemplate(template, Host);
File.WriteAllText(outputFilePath, output);
}
#>
CallContext.SetData(“template1.personName”、“Baby”);
ProcessTemplate(“template1.tt”、“testoutput.txt”);
Oleg的示例使用了两个模板。一个用于保存该方法,另一个用于导入该方法以调用这些方法
从帮助示例:
ProcessTemplate.tt
<#@ template language="C#" hostspecific="True" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="Microsoft.VisualStudio.TextTemplating" #>
<#+
void ProcessTemplate(string templateFileName, string outputFileName)
{
string templateDirectory = Path.GetDirectoryName(Host.TemplateFile);
string outputFilePath = Path.Combine(templateDirectory, outputFileName);
string template = File.ReadAllText(Host.ResolvePath(templateFileName));
Engine engine = new Engine();
string output = engine.ProcessTemplate(template, Host);
File.WriteAllText(outputFilePath, output);
}
#>
ProcessTemplate.tt
此模板还打开特定于主机的选项以生成主机属性。ProcessTemplate方法使用此属性确定独立模板文件的完整路径以及输出目录。ProcessTemplate方法创建T4引擎类的一个新实例,该实例用于编译和运行独立模板
下面是一个模板,它使用此帮助器方法从两个独立模板生成两个输出文件。“(帮助示例中的文本)
Example3.tt
这是“帮助”示例中引用的第一个模板。如果您指定要获取的错误,它将有助于调试。您会得到什么错误?
Example3.tt
<#@ include file="ProcessTemplate.tt" #>
<#
ProcessTemplate("Standalone1.tt", "StandaloneOutput1.txt");
ProcessTemplate("Standalone2.tt", "StandaloneOutput2.txt");
#>