Gtk3 앱 Rider와 T4 템플릿으로 HelloWorld

5766 단어 Ridergtk리눅스T4C#

T4 템플릿이란?



웹 언어에 있는 HTML 템플릿 엔진과 같은 것.
변수나 배열을 포함하고, For문으로 돌려 HTML을 출력하거나,
텍스트나 CS 클래스 파일을 출력할 수 있다
클래스 템플릿을 C#과 텍스트로 만들고 CS 소스로 Dll로 내보낼 수 있습니다.

tt 파일 추가



Rider 탐색기에서 오른쪽 클릭에서 추가에서 T4 파일 선택



tt 파일 열기



HelloWorld를 기입합니다.

test.tt
<#@ template language="C#" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
HelloWorld

Nuget에서 System.CodeDom 설치




System.CodeDom을 설치합니다.
설치하지 않으면 컴파일시 'System.CodeDom.Compiler'에서 찾을 수 없으면 오류가 발생합니다.
型名 'CompilerErrorCollection' は名前空間 'System.CodeDom.Compiler' に見つかりませんでした。
この型はアセンブリ 'System.CodeDom, Version=0.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' 
に転送されました。このアセンブリへの参照を追加することを検討してください。

tt 파일 실행



Preprocess Template에서 실행



실행



CS 종속 파일이 생성됩니다.


텍스트를 출력하는 코드 작성



적절한 곳에 클래스를 선언하고 TransformText()를 호출하면 템플릿 내용이 출력됩니다.
System.CodeDom이 Nuget에서 설치하지 않으면 TransformText에서 오류가 발생합니다.
test test = new test();
var a = test.TransformText();
Console.WriteLine(a);



변수에 값을 넣습니다. 생성자 변수를 넣고 tt에서 표시



종속 클래스는 partial 클래스이므로 나중에 클래스의 내용을 추가할 수 있습니다.
생성자와 Setter를 추가합니다.
namespace T4SapmleGtkApp
{
   partial class test
    {
        public string TestText1;

        private string TestText2;
        public test(string data)
        {
            this.TestText2 = data;
        }
    }
    class MainWindow : Window
    {
        public MainWindow() : this(new Builder("MainWindow.glade"))
        {
            test test = new test("2222");
            test.TestText1 = "1111";
            var a = test.TransformText();
            Console.WriteLine(a);
        }
    }

TT파일중에서는 <#=  #>로 C#의 영역으로 해 표시합니다.

test.tt

<#= TestText1 #>

<#= TestText2 #>

For문 사용법



<##>내가 C#의 영역
<#= val #>내가 C#의 변수 1개까지 표시한다
그렇지 않으면 텍스트 표시
<# var val = "test"; #>
<# for (int i = 1; i <= 10; i++){ #>
        test <#= val #> <#= i #>          
<# } #>

참고 자료





Gtk3 앱 TextView TreeView에 스크롤 막대 표시 다음에

좋은 웹페이지 즐겨찾기