T4模板空白行或换行符

时间:2015-05-28 12:11:51

标签: templates t4

有没有办法指示T4模板生成空行或换行符?

我意识到我可以在已经包含一些文本的块中输出空格。但是,如果我没有输出文字,那该怎么办呢?我想简单地输出一个空白行。例如,在方法调用之间。

@TobiMcNamobi

我正在尝试各种方式使用'#>'和'<#+'以下方法调用之间的标记。我似乎偶然发现了一种有效的技术('#><#+'),但我不明白为什么它有效。就我所知,我指示模板输出一个空格。

<#+
public class Blah
{
    /// <summary>
    /// Generates properties.
    /// </summary>
    /// <param name="codeInterface">The interface containing the properties collection.</param>
    public void GenerateProperties(string blah)
        {
            IEnumerable<String> properties = codeInterface.Properties;

            foreach (var property in properties)
            {
                if (!codeInterface.IsInterface)
                    {
                        this.GeneratePrivateVariable(property);
                    }
            }#> <#+

            foreach (var property in properties)
            {
                if (codeInterface.IsInterface)
                {
                    this.GenerateInterfaceProperty(property);
                }
                else
                {
                    this.GenerateClassProperty(property, codeInterface as string);
                }
            }
        }
#>

编辑:它似乎最初起作用。我按照上面的方式生成,它生成了我预期的输出。现在它没有。这样做:

                    }
            }#> (<-- a single space here, after the tag)
<#+

            foreach (var property in properties)

用视觉传达相当困难。实质上:

  1. 我输入结束标记(#&gt;)
  2. 我输入空格
  3. 我点击了
  4. 我输入开始标记(&lt;#+)
  5. 我不知道这是否正确,但似乎有效。

1 个答案:

答案 0 :(得分:1)

你的例子在&#34;空&#34;上写了一个空格。线。 要解决此问题,您可以使用写入(&#34; \ r \ n&#34;);

在你的例子中:

foreach (var property in properties)
{
    if (!codeInterface.IsInterface)
    {
         this.GeneratePrivateVariable(property);
    }
}
Write("\r\n");

foreach (var property in properties)
{

这应该为生成的文件添加新行。