2

我有以下 .tt 文件,我希望将其用作包含文件,我想在其中向主要 T4 文件公开一些属性:

包括.tt

<#@ assembly name="$(ProjectDir)bin\Debug\EPPlus.dll" #>
<#@ assembly name="System.Configuration.dll" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="System.Configuration" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Text.RegularExpressions" #>
<#@ import namespace="OfficeOpenXml" #>
<#
    public static string EDIInputPath
    {
        get
        {
            return ConfigurationManager.AppSettings["inputPath"];
        }
    }
#>

保存此代码时,它会引发 7 个编译时错误,第一个错误是“预期声明”。

我不经常使用 T4 模板,所以我不完全确定我在这里做错了什么。

4

1 回答 1

2

查看问题的最简单方法是将 T4 文件上的 CustomTool 属性更改为TextTemplatingFilePreprocessor。然后您可以在 Visual Studio 中看到生成的代码。

在您的情况下,问题在于标准控制块内部

<# #> 

您只能拥有可以在方法内工作的语句。T4 模板引擎会将这些语句放在输出模板文本的 TransformText() 方法中。

您定义了一个不允许在方法中使用的属性。您的属性代码需要进入类功能块:

<#+ #>
于 2014-06-20T12:21:40.573 回答