Delen via


Het transformatieproces voor tekstsjablonen

Het transformatieproces van de tekstsjabloon maakt gebruik van een tekstbestand als invoer en genereert een nieuw tekstbestand als uitvoer. U kunt bijvoorbeeld tekstsjablonen gebruiken om Visual Basic- of C#-code te genereren, of u kunt een HTML-rapport genereren.

Drie onderdelen nemen deel aan dit proces: de engine, de host en de instructieprocessors. De engine bepaalt het proces; het communiceert met de host en de instructieprocessor om het uitvoerbestand te produceren. De host biedt elke interactie met de omgeving, zoals het zoeken naar bestanden en assembly's. De richtlijnprocessor voegt functionaliteit toe, zoals het lezen van gegevens uit een XML-bestand of een database.

Het transformatieproces voor tekstsjablonen wordt in twee stappen uitgevoerd. Eerst maakt de engine een tijdelijke klasse, die ook wel de gegenereerde transformatieklasse wordt genoemd. Deze klasse bevat de code die wordt gegenereerd door de instructies en besturingsblokken. Daarna compileert de engine de gegenereerde transformatieklasse en voert deze uit om het uitvoerbestand te produceren.

Components

Onderdeel Description Aanpasbaar (Ja/Nee)
Motor Het engineonderdeel bepaalt het transformatieproces van de tekstsjabloon Nee.
Host De host is de interface tussen de engine en de gebruikersomgeving. Visual Studio is een host van het teksttransformatieproces. Ja. U kunt een aangepaste host schrijven.
Richtlijnverwerkers Richtlijnverwerkers zijn klassen die instructies in tekstsjablonen verwerken. U kunt instructies gebruiken om gegevens op te geven aan een tekstsjabloon vanuit een invoerbron. Ja. U kunt aangepaste instructieprocessors schrijven

De machine

De engine ontvangt de sjabloon als een tekenreeks van de host, die alle bestanden verwerkt die in het transformatieproces worden gebruikt. De engine vraagt vervolgens de host om aangepaste richtlijnprocessors en andere aspecten van de omgeving te vinden. De engine compileert en voert vervolgens de gegenereerde transformatieklasse uit. De engine retourneert de gegenereerde tekst naar de host, waardoor de tekst normaal gesproken in een bestand wordt opgeslagen.

De host

De host is verantwoordelijk voor alles wat betrekking heeft op de omgeving buiten het transformatieproces, waaronder de volgende:

  • Zoeken naar tekst- en binaire bestanden die zijn aangevraagd door de engine of een instructieprocessor. De host kan zoeken naar mappen en de globale assemblycache om assembly's te vinden. De host kan aangepaste instructieprocessorcode voor de engine vinden. De host kan ook tekstbestanden zoeken en lezen en hun inhoud als tekenreeksen retourneren.

  • Lijsten met standaardassemblages en naamruimten die door de engine worden gebruikt voor het maken van de gegenereerde transformatieklasse.

  • Geef het toepassingsdomein op dat wordt gebruikt wanneer de engine de gegenereerde transformatieklasse compileert en uitvoert. Er wordt een afzonderlijk toepassingsdomein gebruikt om de hosttoepassing te beschermen tegen fouten in de sjablooncode.

  • Het gegenereerde uitvoerbestand schrijven.

  • De standaardextensie voor het gegenereerde uitvoerbestand instellen.

  • Het behandelen van transformatiefouten in tekstsjablonen. De host kan bijvoorbeeld de fouten in de gebruikersinterface weergeven of naar een bestand schrijven. (In Visual Studio worden fouten weergegeven in het venster Foutbericht.)

  • Geef een vereiste parameterwaarde op als een gebruiker een instructie heeft aangeroepen zonder een waarde op te geven. De richtlijnprocessor kan de naam van de instructie en de parameter opgeven en de host vragen om een standaardwaarde op te geven als deze er een heeft.

Richtlijnen en richtlijnverwerkers

Een instructie is een opdracht in uw tekstsjabloon. Het biedt parameters voor het generatieproces. Meestal definiëren instructies de bron en het type van het model of andere invoer, en de bestandsnaamextensie van het uitvoerbestand.

Een richtlijnprocessor kan een of meer instructies verwerken. Wanneer u een sjabloon transformeert, moet u een instructieprocessor hebben geïnstalleerd die kan omgaan met de instructies in uw sjabloon.

Richtlijnen werken door code toe te voegen in de gegenereerde transformatieklasse. U roept richtlijnen aan op basis van een tekstsjabloon en de engine verwerkt alle instructieoproepen wanneer deze de gegenereerde transformatieklasse maakt. Nadat u een instructie hebt aangeroepen, kan de rest van de code die u in uw tekstsjabloon schrijft, afhankelijk zijn van de functionaliteit die de richtlijn biedt. U kunt bijvoorbeeld de volgende aanroep uitvoeren naar de import instructie in uw sjabloon:

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

De standaardrichtlijnprocessor converteert dit naar een using instructie in de gegenereerde transformatieklasse. Vervolgens kunt u de StringBuilder-klasse in de rest van uw sjablooncode gebruiken zonder deze als System.Text.StringBuilder te hoeven kwalificeren.