La façon de sortie de l'espace de noms dans les modèles de T4?
J'ai un modèle T4 de classe mis en place avec TextTemplatingFileGenerator Outil Personnalisé dans Visual Studio:
<#@ template language="C#v3.5" hostspecific="True" debug="True" #>
<#
var className = System.IO.Path.GetFileNameWithoutExtension(Host.TemplateFile);
var namespaceName = "MyNamespace";
#>
namespace <#= namespaceName #>
{
public static class <#= className #>
{
//some generated code
}
}
Comment puis-je obtenir la valeur de la "un Outil Personnalisé de l'espace de Noms" à la propriété dans Visual Studio, donc je n'ai pas coder en dur l'espace de noms?
Je serais même heureux avec l'espace de noms par défaut pour le projet C#.
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez Visual Studio 2010, vous pouvez récupérer de l'espace de noms par la vérification de la CallContext du "NamespaceHint de la propriété".
Voici ce que vous pouvez faire avec T4 Boîte À Outils:
DefaultNamespace propriété de TransformationContext classe renvoie une chaîne de caractères avec l'espace de noms basé sur l'espace de noms racine de votre projet et l'emplacement de votre .tt de fichier (c'est à dire qu'il traite les dossiers que des espaces de noms). De cette façon, vous n'avez pas à spécifier l'Outil Personnalisé de l'espace de Noms de propriété pour chaque instance de votre .tt fichier.
Si vous préfèrent utilisation de l'Outil Personnalisé de l'espace de Noms de la propriété, vous pouvez passer de l'Hôte.TemplateFile à la GetCustomToolNamespace méthode posté par @sixlettervariables.
Damien Garde comprend un peu de code dans un billet de blogue qui récupère l'Outil Personnalisé de l'espace de Noms pour un fichier donné:
Comment j'ai fait:
Si vous utilisez Visual Studio 2012
Aldo Flores
@alduar
La accepté de répondre ne fonctionne pas sur Projets Visual Basic. J'ai dû utiliser la méthode à partir de: http://lennybacon.com/post/2010/12/10/generatingcodefileswithcorrectnamespacesusingt4