Erreurs et avertissements courants lors de l'utilisation de modèles de texte
La fenêtre Liste d'erreurs de Visual Studio affiche les avertissements et erreurs correspondant aux modèles de texte. Cette rubrique décrit les erreurs et avertissements communs et explique comment vous pouvez les résoudre.
Descriptions d'erreur et correctifs
Le tableau suivant répertorie les erreurs les plus courantes et leurs correctifs.
Message d'erreur |
Description |
Solution |
---|---|---|
Impossible de charger la classe de base '{0}' de laquelle la classe Transformation hérite. |
Se produit si vous ne trouvez pas la classe de base spécifiée dans le paramètre inherits dans une directive de modèle. Le message fournit le numéro de ligne de la directive de modèle. |
Assurez-vous que la classe spécifiée existe, et que l'assembly dans laquelle il existe est spécifié dans une directive d'assembly. |
Impossible de résoudre le texte Include pour le fichier : {0} |
Se produit lorsque vous ne trouvez pas un modèle inclus. Le message fournit le nom du fichier Include demandé. |
Assurez-vous que le chemin d'accès de fichier est relatif au chemin d'accès de modèle d'origine, ou que le fichier se trouve à un emplacement inscrit auprès de l'hôte, ou qu'il y a un chemin d'accès complet au fichier. |
Les erreurs ont été générées lors de l'initialisation de l'objet de transformation. La transformation ne sera pas exécutée. |
Se produit lorsque la méthode 'Initialize()' de la classe de transformation échoue ou retourne la valeur false. |
Le code dans la fonction Initialize() provient de la classe de transformation de base spécifiée dans la directive <#@template#> et les processeurs de directive. L'erreur qui a provoqué l'échec de l'initialisation figure probablement dans la liste d'erreurs. Étudiez pourquoi il a échoué. Vous pouvez regarder le code généré réel pour Initialize() en suivant les procédures pour déboguer un modèle. |
Le jeu d'autorisations FullTrust n'a pas été accordé à l'assembly '{0}' du processeur de directive '{1}'. Seuls les assemblys fiables sont autorisés à fournir des processeurs de directive. Ce processeur de directive ne sera pas chargé. |
Se produit lorsque le système n'accorde pas les autorisations FullTrust à un assembly contenant un processeur de directive. Le message fournit le nom de l'assembly et le nom du processeur de directive. |
Assurez-vous que vous utilisez uniquement des assemblys fiables sur l'ordinateur local. |
Le chemin d'accès '{0}' doit être local par rapport à cet ordinateur ou faire partie de votre zone de confiance. |
Se produit lorsqu'une directive ou une directive d'assembly référence un fichier qui ne se trouve pas sur votre ordinateur local ou dans la zone de confiance de votre réseau. |
Assurez-vous que le répertoire où les directives d'assembly et la directive se trouvent sont dans votre zone de confiance. Vous pouvez ajouter un répertoire réseau à votre zone de confiance via Internet Explorer. |
Plusieurs erreurs de syntaxe telles que le « Jeton 'catch non valide' » ou « Un espace de noms ne peut pas contenir directement des membres » |
Trop d'accolades fermantes dans votre code du modèle. Le compilateur le confond avec le code de génération standard. |
Vérifiez le nombre d'accolades et de crochets fermants à l'intérieur des délimiteurs de code. |
Compilation ou exécution incorrecte de boucles ou de conditions. Par exemple :
Ce code affiche toujours la valeur "i". Seul "Number is:" est conditionnel. |
En c#, utilisez toujours des accolades pour entourer les blocs de texte qui sont incorporés dans les instructions de contrôle. |
Ajouter des accolades :
|
"Expression trop complexe" lors du traitement d'un modèle de design ou de la compilation d'un modèle d'exécution (prétraité). Visual Studio cesse de travailler lors d'une tentative d'inspection du code généré par un modèle de runtime. |
Le bloc de texte est trop long. T4 convertit les blocs de texte en expression de concaténation de chaînes, avec un littéral de chaîne pour chaque ligne de modèle. Les blocs de texte très longs peuvent dépasser les limites de taille du compilateur. |
Fractionner le bloc de texte long avec un bloc d'expression tel que : <#= "" #> |
Description des avertissements et correctifs
Le tableau suivant répertorie les avertissements les plus courants avec leurs correctifs, s'ils sont disponibles.
Message d'avertissement |
Description |
Solution |
---|---|---|
Le chargement du fichier Include '{0}' a retourné une chaîne null ou vide. |
Se produit si un fichier de modèle de texte inclus est vierge. Le message fournit le nom du fichier inclus. |
Supprimez la directive Include ou assurez-vous que le fichier a du contenu. |
Compilation de la transformation : |
Ajoute cette chaîne à l'ensemble des erreurs ou avertissements générés par le compilateur lorsqu'il compile la transformation. Cette chaîne signifie que le compilateur a levé une erreur ou un avertissement. |
Si vous avez un problème à trouver la DLL, vous devrez peut-être fournir le chemin d'accès complet ou un nom fort qualifié complet si la DLL est dans le GAC. |
Le paramètre '{0}' existe déjà dans la directive. Le paramètre en double sera ignoré. |
Se produit lorsqu'un paramètre est spécifié plusieurs fois dans une directive. Le message fournit le nom du paramètre et le numéro de ligne de la directive. |
Supprimez la spécification de paramètre en double. |
Une erreur s'est produite lors du chargement du fichier Include '{0}'. La directive Include sera ignorée. |
Se produit lorsque vous ne trouvez pas un fichier spécifié dans une directive include. Le message fournit le nom du fichier et le numéro de ligne de la directive. |
Assurez-vous que le fichier Include existe dans le même répertoire que le fichier de modèle de texte d'origine ou dans l'un des répertoires Include inscrit auprès de l'hôte. |
Une classe de base non valide a été spécifiée pour la classe de transformation. La classe de base doit dériver de Microsoft.VisualStudio.TextTemplating.TextTransformation. |
Se produit lorsque le paramètre inherits d'une directive de modèle spécifie une classe qui n'hérite pas de TextTransformation. Le message fournit le numéro de ligne de la directive de modèle. |
Spécifiez une classe qui dérive de TextTransformation. |
Une culture non valide a été spécifiée dans la directive « modèle ». La culture doit être au format "xx-XX". La culture indifférente sera utilisée. |
Se produit lorsque le paramètre de culture d'une directive de modèle n'est pas spécifié correctement. Le message fournit le numéro de ligne de la directive de modèle. |
Modifiez le paramètre de culture en une culture valide dans le format « xx-XX ». |
Une valeur de débogage non valide '{0}' a été spécifiée dans la directive de modèle. La valeur de débogage doit être "true" ou "false". La valeur par défaut "false" sera utilisée. |
Se produit lorsque le paramètre debug d'une directive de modèle n'est pas spécifié correctement. Le message fournit le numéro de ligne de la directive de modèle. |
Affectez la valeur "true" ou "false" au paramètre de débogage. |
Une valeur HostSpecific non valide '{0}' a été spécifiée dans la directive de modèle. La valeur HostSpecific doit être "true" ou "false". La valeur par défaut "false" sera utilisée. |
Se produit lorsque le paramètre spécifique à l'hôte d'une directive template n'est pas spécifié correctement. Le message fournit le numéro de ligne de la directive de modèle. |
Affectez la valeur "true" ou "false" au paramètre spécifique à l'hôte. |
Un langage non valide '{0}' a été spécifié dans la directive « modèle ». Le langage doit être "C#" ou "VB". La valeur par défaut de « "C# » sera utilisée. |
Se produit lorsqu'un langage non pris en charge est spécifié dans la directive template. Seules les valeurs "C#" ou "VB" sont autorisées (non sensibles à la casse). Le message fournit le numéro de ligne de la directive de modèle. |
Affectez la valeur "C#" ou "VB" au paramètre language de la directive de modèle. |
Plusieurs directives de sortie ont été trouvées dans le modèle. Tous à l'exception du premier seront ignorés. |
Se produit lorsque plusieurs directives output sont spécifiées dans un fichier modèle. Le message fournit le numéro de ligne de la directive de sortie en double. |
Supprimez les directives output en double. |
Plusieurs directives de modèle ont été trouvées dans le modèle. Tous à l'exception du premier seront ignorés. Plusieurs paramètres de la directive de modèle doivent être spécifiés dans une directive de modèle. |
Se produit si vous spécifiez plusieurs directives template dans un fichier de modèle de texte (notamment les fichiers inclus). Le message fournit le numéro de ligne de la directive de modèle en double. |
Regroupez les différentes directives template dans une directive template. |
Aucun processeur n'a été spécifié pour une directive nommée '{0}'. La directive sera ignorée. |
Se produit si vous spécifiez une directive custom, mais ne fournissez pas d'attribut processor. Le message fournit le nom de la directive et le numéro de ligne. |
Fournissez un attribut processor avec le nom du processeur directive correspondant à la directive. |
Un processeur nommé' {0}' n'a pas pu être trouvé pour la directive nommée' {1}.' La directive sera ignorée. |
Se produit lorsque le système ne trouve pas le processeur directive que vous avez spécifié dans une directive custom. Le message fournit le nom de la directive, le nom du processeur et le numéro de ligne de la directive. |
Affectez à l'attribut processor de la directive le nom du processus de directive. |
Un paramètre obligatoire' {0}' pour la directive' {1}' était introuvable. La directive sera ignorée. |
Se produit lorsque le système ne fournit pas un paramètre de directive obligatoire. Le message fournit le nom du paramètre manquant, le nom de la directive et le numéro de ligne. |
Fournissez le paramètre manquant. |
Le processeur nommé '{0}' ne prend pas en charge la directive nommée '{1}.' La directive sera ignorée. |
Se produit lorsqu'un processeur de directive ne prend pas en charge une directive. Le message fournit le nom et le numéro de ligne de la directive incriminée, ainsi que le nom du processeur de directive. |
Corrigez le nom de la directive. |
La directive Include associée au fichier '{0}' génère une boucle infinie. |
Affiché si les directives Include circulaires sont spécifiées (par exemple, fichier A inclut le fichier B, qui inclut le fichier A). |
Ne spécifiez pas de directives Include circulaires. |
Exécution de la transformation : |
Ajoute cette chaîne à l'ensemble des erreurs ou avertissements générés lors de l'exécution de la transformation. |
Non applicable. |
Une balise de début ou de fin inattendue a été trouvée dans un bloc. Assurez-vous que vous n'avez pas mal tapé une balise de fin ou de début, et que vous n'avez pas de blocs imbriqués dans le modèle. |
Affiché lorsque vous avez un <# ou #> inattendu. C'est-à-dire, si vous avez un <# après une autre balise ouverte qui n'a pas été fermée, ou que vous avez un #> lorsqu'il n'y a aucune balise ouverte non fermée avant lui. Le message fournit le numéro de ligne de la balise sans correspondance. |
Supprimez la balise de fin ou de début incompatible ou utilisez un caractère d'échappement. |
Une directive a été spécifiée dans un format incorrect. La directive sera ignorée. Veuillez spécifier la directive au format <#@ nom [parametername = "parametervalue"]* #> |
Affiché par l'analyseur si une directive n'est pas spécifiée dans le format correct. Le message fournit le numéro de ligne de la directive incorrecte. |
Assurez-vous que toutes les directives sont au format <#@ name [parametername="parametervalue"]* #>. Pour plus d'informations, consultez Directives de modèles de texte T4. |
Impossible de charger l'Assembly '{0}' pour le processeur de directive inscrit '{1}' {2} |
Se produit lorsqu'un processeur de directive n'a pas pu être chargé par l'hôte. Le message identifie l'assembly fourni pour le processeur de directive et le nom du processeur de directive. |
Assurez-vous que le processeur de directive est inscrit correctement et que l'assembly existe. |
Impossible de trouver le type '{0}' dans l'Assembly' {1}' pour le processeur de directive inscrit '{2}' {3} |
Se produit lorsqu'un type de processeur de directive n'a pas pu être chargé à partir de son assembly. Le message fournit les noms du type, de l'assembly et du processeur de directive. |
Le vshost recherche les informations de processeur de directive (nom, assembly et type) dans le Registre. Assurez-vous que le processeur de directive est inscrit correctement, et que le type existe dans l'assembly. |
Un problème s'est produit lors du chargement de l'assembly '{0}'. |
Se produit lorsqu'un problème survient lors du chargement d'un assembly. Le message fournit le nom de l'assembly. |
Vous pouvez spécifier des assemblys à charger dans les directives <@#assembly #>, et par les processeurs de directive. Le message d'erreur qui suit cette chaîne doit fournir des données supplémentaires sur la cause ayant provoqué l'échec du chargement de l'assembly. |
Un problème s'est produit lors de la création et de l'initialisation du processeur pour une directive nommée '{1}'. Le type du processeur est {0}. La directive sera ignorée. |
Se produit lorsque le système ne parvient pas à créer ou initialiser un processeur de directive. Le message fournit le nom et le numéro de ligne de la directive et le type du processeur. |
Assurez-vous que vous utilisez le processeur de directive correct, et que le processeur de directive a un constructeur public par défaut. Sinon, utilisez les options de débogage pour trouver pourquoi la méthode Initialize() du processeur de directive échoue. Pour plus d'informations, consultez Dépannage des modèles de texte T4. |
Une exception a été levée pendant le traitement d'une directive nommée '{0}'. |
Se produit lorsqu'un processeur de directive lève une exception lors du traitement d'une directive. |
Assurez-vous que les paramètres au processeur de directive sont corrects. |
L'hôte a levé une exception en essayant de résoudre la référence d'assembly '{0}'. |
Se produit si l'hôte lève une exception lorsqu'il tente de résoudre une référence d'assembly. Le message fournit la chaîne de référence d'assembly. |
Les références d'assembly proviennent de directives <@#assembly#> et de processeurs de directive. Assurez-vous que le paramètre 'nom' fourni dans le paramètre d'assembly est correct. |
Tentative de spécification d'une valeur {1} '{0}' pour la directive {2} |
Produit par la classe RequiresProvidesDirectiveProcessor (tous nos processeurs de directive générés dérivent de cette dernière) lorsque vous fournissez un argument requires/provides non pris en charge. |
Assurez-vous que les noms dans la paire name='value' fournie dans les paramètres requires et provides sont corrects. |