다음을 통해 공유


텍스트 템플릿 변환 프로세스

텍스트 템플릿 변환 프로세스는 텍스트 템플릿 파일을 입력으로 사용하고 새 텍스트 파일을 출력으로 생성합니다. 예를 들어 텍스트 템플릿을 사용하여 Visual Basic 또는 C# 코드를 생성하거나 HTML 보고서를 생성할 수 있습니다.

이 프로세스에는 엔진, 호스트 및 지시문 프로세서의 세 가지 구성 요소가 참여합니다. 엔진이 프로세스를 제어합니다. 는 호스트 및 지시문 프로세서와 상호 작용하여 출력 파일을 생성합니다. 호스트는 파일 및 어셈블리 찾기와 같은 환경과의 상호 작용을 제공합니다. 지시문 프로세서는 XML 파일 또는 데이터베이스에서 데이터를 읽는 것과 같은 기능을 추가합니다.

텍스트 템플릿 변환 프로세스는 두 단계로 수행됩니다. 먼저 엔진은 생성된 변환 클래스라고 하는 임시 클래스를 만듭니다. 이 클래스에는 지시문 및 제어 블록에 의해 생성되는 코드가 포함됩니다. 그런 다음 엔진이 생성된 변환 클래스를 컴파일하고 실행하여 출력 파일을 생성합니다.

Components

구성 요소 Description 사용자 지정 가능(예/아니요)
Engine 엔진 구성 요소는 텍스트 템플릿 변환 프로세스를 제어합니다. 아니요.
Host 호스트는 엔진과 사용자 환경 간의 인터페이스입니다. Visual Studio는 텍스트 변환 프로세스의 호스트입니다. 예. 사용자 지정 호스트를 작성할 수 있습니다.
지시문 프로세서 지시문 프로세서는 텍스트 템플릿에서 지시문을 처리하는 클래스입니다. 지시문을 사용하여 입력 소스의 텍스트 템플릿에 데이터를 제공할 수 있습니다. 예. 사용자 지정 지시문 프로세서를 작성할 수 있습니다.

엔진

엔진은 변환 프로세스에 사용되는 모든 파일을 처리하는 호스트에서 템플릿을 문자열로 받습니다. 그런 다음 엔진은 호스트에게 사용자 지정 지시문 프로세서 및 환경의 다른 측면을 찾도록 요청합니다. 그런 다음, 엔진은 생성된 변환 클래스를 컴파일하고 실행합니다. 엔진은 생성된 텍스트를 호스트에 반환하며, 이 텍스트는 일반적으로 파일에 저장됩니다.

호스트

호스트는 다음을 포함하여 변환 프로세스 외부의 환경과 관련된 모든 작업을 담당합니다.

  • 엔진 또는 지시문 프로세서에서 요청한 텍스트 및 이진 파일 찾기 호스트는 디렉터리와 전역 어셈블리 캐시를 검색하여 어셈블리를 찾을 수 있습니다. 호스트는 엔진에 대한 사용자 지정 지시문 프로세서 코드를 찾을 수 있습니다. 호스트는 텍스트 파일을 찾아 읽고 해당 내용을 문자열로 반환할 수도 있습니다.

  • 생성된 변환 클래스를 만들기 위해 엔진에서 사용하는 표준 어셈블리 및 네임스페이스 목록을 제공합니다.

  • 엔진이 생성된 변환 클래스를 컴파일하고 실행할 때 사용되는 애플리케이션 도메인을 제공합니다. 템플릿 코드의 오류로부터 호스트 애플리케이션을 보호하기 위해 별도의 애플리케이션 도메인이 사용됩니다.

  • 생성된 출력 파일을 작성합니다.

  • 생성된 출력 파일의 기본 확장 프로그램 설정

  • 텍스트 템플릿 변환 오류 처리 예를 들어 호스트는 사용자 인터페이스에 오류를 표시하거나 파일에 쓸 수 있습니다. (Visual Studio에서는 오류 메시지 창에 오류가 표시됩니다.)

  • 사용자가 값을 제공하지 않고 지시문을 호출한 경우 필수 매개 변수 값을 제공합니다. 지시문 프로세서는 지시문 및 매개 변수의 이름을 지정하고 호스트에 기본값이 있는 경우 기본값을 제공하도록 요청할 수 있습니다.

지시문 및 지시문 프로세서

지시문은 텍스트 템플릿의 명령입니다. 생성 프로세스에 대한 매개 변수를 제공합니다. 일반적으로 지시문은 모델 또는 다른 입력의 원본 및 형식과 출력 파일의 파일 이름 확장명을 정의합니다.

지시문 프로세서는 하나 이상의 지시문을 처리할 수 있습니다. 템플릿을 변환할 때 템플릿의 지시문을 처리할 수 있는 지시문 프로세서를 설치해야 합니다.

지시문은 생성된 변환 클래스에 코드를 추가하여 작동합니다. 텍스트 템플릿에서 지시문을 호출하고 엔진은 생성된 변환 클래스를 만들 때 모든 지시문 호출을 처리합니다. 지시문을 성공적으로 호출한 후 텍스트 템플릿에서 작성하는 나머지 코드는 지시문이 제공하는 기능에 의존할 수 있습니다. 예를 들어 템플릿에서 import 지시문을 다음과 같이 호출할 수 있습니다.

<#@ import namespace="System.Text" #>

표준 지시문 프로세서는 이것을 생성된 변환 클래스 내에서 using 구문으로 변환합니다. 그런 다음, 템플릿 코드의 나머지 부분에서 StringBuilder 클래스를 System.Text.StringBuilder로 정규화하지 않고 사용할 수 있습니다.