2009-07-15 8 views
0

Je tente de générer du code via T4 et je reçois l'erreur suivante lorsque j'inclue la directive < # @ template language = "VBv3.5" #> dans mon modèle.VBv3.5 include erreur de la directive throw lors de l'appel de la méthode ProcessTemplate

vbc: ligne de commande (0,0): BC2006 d'erreur: Compinling transformation: option 'r' exige « : (liste_fichiers)

Si j'utilise < # @ modèle language = "C# v3.5" #> comme ma directive ça marche très bien. Aussi, si je n'essaie pas de générer via le code et juste sauvegarder le fichier .tt cela fonctionne très bien avec la directive VBv3.5.

Voici mon modèle t4.

<#@ output extension="txt" #> 
<#@ assembly name="Microsoft.SqlServer.ConnectionInfo" #> 
<#@ assembly name="Microsoft.SqlServer.Smo" #> 
<#@ assembly name="System.Configuration" #> 
<#@ assembly name="Microsoft.VisualBasic" #> 
hello world 

Voici mon code .NET

Dim host As CustomCmdLineHost = New CustomCmdLineHost() 
    Dim engine As Engine = New Engine() 

    host.TemplateFileValue = sTemplateFile 

    'Read the text template. 
    Dim input As String = File.ReadAllText(sTemplateFile) 

    'Transform the text template. 
    Dim output As String = engine.ProcessTemplate(input, host) 

Répondre

0

Cela fonctionne avec les hôtes standard T4 (dans Visual Studio et TextTransform). En fonction de l'erreur, il semble que votre hôte personnalisé ne fournisse pas correctement la liste des références d'assembly.

+0

Merci pour la réponse. J'aime vos tutoriels T4 en passant! Je suis capable de faire fonctionner correctement juste en enregistrant simplement le fichier .tt dans Visual Studio (je suppose que c'est ce que vous voulez dire par les hôtes T4 standard?). Il bombarde juste quand j'inclus la directive VBv3.5 et exécute la méthode ProcessTemplate en passant dans le CustomCmdLineHost. Si je supprime la directive VBv3.5 ou la change en C# v3.5, tout fonctionne correctement. – vonfeldj

Questions connexes