Si vous devez créer un fichier de classe différent du modèle T4 d'origine, je pense qu'il est préférable si vous créez un nouveau modèle à cette fin. Si vous souhaitez enregistrer un fichier dans un tempalte, vous pouvez créer le fichier en utilisant la bibliothèque Syste.IO:
<#@ import namespace=“System.IO” #>
<#+
void SaveOutput(string outputFileName)
{
string templateDirectory = Path.GetDirectoryName(Host.TemplateFile);
string outputFilePath = Path.Combine(templateDirectory, outputFileName);
File.WriteAllText(outputFilePath, GetMyContent());
}
#>
<#+
string GetMyContent()
{
// clean the environment
this.GenerationEnvironment.Remove(0, this.GenerationEnvironment.Length);
#>
This is my content
<#+
// return new content
return this.GenerationEnvironment.ToString();
}
#>
Vous devez développer votre GetMyContent()
pour remplir le fichier de sortie avec le contenu approprié. Dans cet exemple, GetMyContent
nettoie l'environnement à chaque fois, alors n'oubliez pas d'utiliser la méthode SaveOutput une fois tous les autres fichiers créés.
Cela devrait aider à scinder le fichier du référentiel. Je veux également ajouter du code dans un fichier de classe existant dans le cadre de l'échafaudage du référentiel avec le modèle MVC Scaffolding. Des idées là-bas? – GraemeMiller
@GraemeMiller Vous pouvez essayer de modifier le fichier ControllerWithRepository.cs.t4 (faites une copie de sauvegarde avant) placé dans le répertoire packages \ MvcScaffolding.1.0.4.0 du projet. Vous pouvez ajouter la fonction SaveOutput et votre nouveau contenu. –