从 cli 运行 t4 预处理模板

Running t4 preprocessed template from cli

提问人:Naish O'Loughlin 提问时间:11/1/2023 最后编辑:Naish O'Loughlin 更新时间:11/1/2023 访问量:29

问:

当我右键单击我的 .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

任何帮助使其运行将不胜感激。

C# visual-studio blazor-server-side t4

评论


答: 暂无答案