Панель инструментов T4 - смешивание функции класса и блоков операторов

Я - новичок T4, пытающийся использовать Панель инструментов T4, чтобы сгенерировать код F# на основе этого ответа, но кажется, что блоки функции класса не могут быть смешаны с блоками операторов. Вот мой код:

<#@ template language="C#" hostspecific="True" debug="True" #>
<#@ output extension="txt" #>
<#@ include file="T4Toolbox.tt" #>
<#
    FSharpTemplate template = new FSharpTemplate();
    template.Output.Project = @"..\Library1\Library1.fsproj";
    template.Output.File = "Module2.fs";
    template.Render();
#>
<#+
class FSharpTemplate: Template
{
    public override string TransformText()
    {
#>

module Module2

<# for (int i = 0; i < 10; i++) { #>
<#= i #>
<# } #>

<#+
        return this.GenerationEnvironment.ToString();
    }
}

#>

И я получаю эту ошибку:

Оператор не может появиться после функции первого класса в шаблоне. Только шаблон, выражения и другие функции класса позволяются после блока функции первого класса.

Так..., как я могу переписать шаблон для достижения этого?

11
задан Community 23 May 2017 в 12:25
поделиться

2 ответа

После первого функционального блока класса вам необходимо сделать все последующие блоки инструкций также и функциональными блоками классов.

Внутренний блок функциональных возможностей первого класса завершает закулисный метод "Generate" и переключается на вставку содержимого как членов скрытого класса шаблона.

Если вы используете Visual Studio 2010, вы всегда можете создать предварительно обработанный шаблон и вставить в него свой обычный код шаблона, чтобы увидеть, что происходит под капотом.

11
ответ дан 3 December 2019 в 05:12
поделиться

У вас должны быть все функции класса в одном функциональном блоке под любым выходом.

5
ответ дан 3 December 2019 в 05:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: