-
비주얼 스튜디오의 텍스트 템플릿 사용해보기@ 17. 1 ~ 18/용어정리 2017. 9. 21. 23:41
<# 안에 c#코드들을 넣어서 작동시킬 수 있다.
자세한 문법사용 내용은
https://msdn.microsoft.com/ko-kr/library/bb126545.aspx
test.cs 파일
1234567891011121314151617181920using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApp2 {/// <summary>/// 여기에 test는 tt파일과 같은 이름의 클래스를 partial로 구분해서 정의하고 있는것/// string name은 실제 tt파일내부에서 <#=name#>으로 사용하기 위해서이다./// </summary>partial class test {private string name;public test(string name){this.name = name;}}}cs program.cs
123456789101112131415161718192021222324using System;using System.Collections.Generic;using System.Diagnostics;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApp2 {class Program {static void Main(string[] args){//tt에서 생성된 클래스와 TestCode.cs에서//partial로 확장된 클래스에 대해 생성한다.//단순히 생성까지만해서는 아무런 반응이 없다.var report = new test("DD");//아래의 TransformText().ToString()을 하게되면 이때 비로소//test.tt에 정의한 스크립트들이 실행된다.Console.WriteLine(report.TransformText().ToString());Console.ReadLine();}}}cs test.tt
1234567891011121314151617<#@ template language="C#" #><#@ assembly name="System.Core" #><#@ import namespace="System.Linq" #><#@ import namespace="System.Text" #><#@ import namespace="System.Collections.Generic" #><#@ import namespace="System.IO"#>안녕하세요 <#=name #> 입니다.<#int count = 0;foreach(var i in Directory.GetFiles(@"C:\")){count++;var fi = new FileInfo(i); #>파일<#=count #> : <#=fi.Name #><# } #>cs <# Standard control blocks #>
은 문을 포함할 수 있습니다.<#= Expression control blocks #>
은 식을 포함할 수 있습니다.<#+ Class feature control blocks #>
은 메서드, 필드 및 속성을 포함할 수 있습니다.
tt파일 내부에 count와 fi.Name은 바로 위에 <# ~ #>안에 있는 c# 코드가 실행되면서 사용할 수 있는 count와 fi를 <#=count #>, <#=fi.Name>
의 변수값에 넣는것 입니다.
실행결과