T4 템플릿(Text Template Transformation Toolkit)

T4 템플릿의 정의는 매우 간단하다. 전체 템플릿의 내용은 두 가지 형식을 포함하는데 그것이 바로 정적 형식과 동적 동태이다.전자는 템플릿에 직접 써서 출력한 텍스트이고, 후자는 특정한 언어를 바탕으로 코드를 작성하여 T4 엔진이 동적으로 실행한다.이것은 우리가 내연을 통해 작성한 ASP와 같다.NET 페이지가 비슷함: HTML은 정적입니다. C# 또는 VB.NET 코드가 작성한 동적 실행 코드는 해당 태그를 통해 포함됩니다.
이제 VS를 통해 원하는 C# 코드를 생성하는 T4 템플릿을 직접 만듭니다.프로젝트 파일을 마우스 오른쪽 버튼으로 클릭하고 Add | New Item 을 선택한 다음 템플릿 목록에서 Text Template 을 선택합니다.파일 이름을 지정한 후, 접미사 이름은.tt의 파일이 만들어지고 이 파일에 다음과 같은 코드를 작성합니다.
1: 
2: 
3: 
4: 
5: using System;
6: 
7: namespace Artech.CodeGeneration
8: {
9: class Program
10: { 
11: staticvoid Main(string[] args)
12: { 
13: Console.WriteLine("Hello, {0}","");
17: 
18: }
19: }
20: }
21: 
22: 

파일을 저장한 후.cs 파일이 TT 파일의 첨부 파일로 추가됩니다.위의 TT 파일은 간단하지만 T4 템플릿을 구성하는 기본 요소를 포함하고 있습니다.이 T4 템플릿을 판독하기 전에, 우리는 먼저 완전한 T4 템플릿이 어떻게 구성되는지 이해할 필요가 있다.
T4 템플릿의 기본 구조:
기본적으로 명령 블록(Directive Block), 텍스트 블록(Text Block), 코드 문장 블록(Statement Block), 표현식 블록(Expression Block)과 클래스 특성 블록(Class Feature Block)으로 나눌 수 있다.
1, 명령 블록(Directive Block)
및 ASP.NET 페이지의 명령은 표시를 통해 파일 헤더에 나타납니다.그 중에서 지령은 필수적이며 템플릿의 기본 속성을 정의하는 데 사용된다. 예를 들어 프로그래밍 언어, 기반의 문화, 모뎀을 지원하는지 등이다.비교적 자주 사용하는 명령은 프로그램 집합에서 인용하는 것, 이름 공간을 가져오는 것 등도 포함한다.
2. 텍스트 블록(Text Block)
텍스트 블록은 직접 출력된 정적 텍스트로 탭을 추가할 필요가 없습니다.위의 템플릿 파일에서, 및 에 정의된 텍스트를 처리하는 것은 모두 텍스트 블록에 속합니다.예를 들어 명령 블록에서 첫 번째까지 끝내기"
1:
using
 System;
 2:
  
3:
namespace
 Artech.CodeGeneration
 4:
 {
 5:
class
 Program
 6:
 { 
7:
static
void
 Main(
string
[] args)
 8:
 { 
9:
3. 코드문 블록(Statement Block)
코드 문장 블록은 형식을 통해 중간은 상응하는 프로그래밍 언어를 통해 작성된 프로그램 호출이고 우리는 코드 문장을 통해 텍스트 전환의 절차를 신속하게 제어할 수 있음을 나타낸다.위의 코드에서, 우리는 코드 문장 블록을 통해 하나의 그룹을 옮겨다니며, 중복된 Console을 출력한다.WriteLine(Hello, {0}, Xxx) 문
1:
 
 2:
foreach
(var person 
in
this
.InitializePersonList()) 
3:
 {
 4:
 #>
 5:
 Console.Write(
"Hello, {0}"
,
""
);
 6:
 
 7:
 } 
8:
 #>
4. 표현식 블록(Expression Block)
표현식 블록은 를 통해 동적으로 해석된 문자열 표현이 출력된 텍스트에 내장되어 있음을 나타냅니다.예를 들어 위의foreach 순환에서 매번 출력되는 사람의 이름은 표현식 블록의 형식으로 정의됩니다 ()
5, 클래스 특성 블록(Class Feature Block)
만약에 텍스트 전환에 비교적 복잡한 논리가 필요하다면 우리는 하나의 단독 보조 방법, 심지어 일부 단독 클래스를 정의해야 한다. 우리는 그것들을 클래스 특성 블록에 정의한다.클래스 특성 블록의 표현 형식은Hello World 템플릿에 대해 인명 목록을 얻는InitializePersonList 방법은 클래스 특성 블록에 정의된다.
1:
 
2:
public
string
[] InitializePersonList()
 3:
 {
 4:
return
new
string
[]{
"Foo"
,
"Bar"
,
"Baz"
};
 5:
 }
 6:
 #>  
전체 코드에서 생성된 입력, 즉 XML 파일Messages.xml과 템플릿 파일은 같은 디렉터리에 있지만 Host 속성의 ResolvePath 방법을 통해 파일의 물리적 경로를 분석해야 합니다.ResolvePath 메서드를 호출하려면 템플릿 명령의 hostspecific 를 true 로 설정해야 합니다.
 
T4(Text Template Transformation Toolkit)는 마이크로소프트가 공식적으로 VisualStudio 2008에서 사용하기 시작한 코드 생성 엔진이다. 
1. T4 지능형 감지, 설치http://t4-editor.tangible-engineering.com/T4-Editor-Visual-T4-Editing.html  ..또는 vs2010에서 플러그인 관리에서 검색
 
T4 템플릿 구문을 간략하게 소개합니다.
템플릿에 사용할 언어를 지정할 수 있습니다.hostSpecific="true"는 특정host를 사용할지 여부를 나타냅니다. (Kalman Studio에서 사용하는 언어는 TableHost 대상이며 인터페이스 ITextTemplating EngineHost를 실현해야 합니다)
생성된 파일의 확장자 지정
프로그램 집합 인용을 추가합니다. 제3자 프로그램 집합을 사용하려면 프로젝트에 인용을 추가하거나 GAC에 가입하는 것이 좋습니다
사용할 명칭 공간을 가져옵니다. 주의: 여기 명칭 공간은 앞에서 지정한 프로그램 집합에서 찾아야 합니다. 예를 들어 제가 지정한 명칭 공간인 'System. Data', 'System. Data. Common' 은 프로그램 집합 System에서 찾을 수 있습니다.Data
템플릿 가져오기
코드 블록 정의
표현식 정의하기
변수 정의

좋은 웹페이지 즐겨찾기