当我右键单击 .tt 文件并从 Visual Studio 2022 中选择“运行自定义工具”时,.cs 输出文件会完美生成,但是当我尝试从 Powershell CLI 运行 TextTransform.exe 或 TextTransformCore.exe 时,转换失败并出现以下错误:
错误CS0103:编译转换:当前上下文中不存在名称“s_data”
但是名称 s_data 是在与模板匹配的部分类中声明的,并且在使用 VS“运行自定义工具”选项运行时可以很好地识别。
SideNavTemplate.tt 文件中的代码:
<#@ template language="C#" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<ul class="side_nav">
<# foreach (MenuItem sideItem in s_data) { #>
...
<# } #>
</ul>
部分类中的代码:
using System.Xml.Linq;
namespace Excelerator.Models;
partial class SideNavTemplate
{
private List<MenuItem> s_data;
public SideNavTemplate(List<MenuItem> data) { s_data = data; }
}
public class MenuItem
{
public string label { get; set; }
public string route { get; set; }
public List<MenuItem> subMenu { get; set; }
public List<MenuItem> sideData { get; set; }
public FormItem form { get; set; }
public string role { get; set; }
}
public class FormItem
{
public string name { get; set; }
}
尝试从两个文件所在的目录调用 TextTransform.exe,但很遗憾它无法识别 s_data 属性。
.tt 文件的自定义工具属性是
TextTemplatingFilePreprocessor
任何让其运行的帮助将不胜感激。