2011-08-08 5 views
4

Nous utilisons des modèles t4 pour gérer les configurations de notre projet. Et le fichier web.config est généré via le fichier web.tt. Après la génération dans le fichier csproj je suit:t4 génère un fichier sans attribut DependentUpon dans le fichier csproj

<Content Include="Web.config"> 
    <AutoGen>True</AutoGen> 
    <DesignTime>True</DesignTime> 
    <DependentUpon>Web.tt</DependentUpon> 
</Content> 

Est-il possible de configurer modèle pour générer en quelque sorte t4 fichier web.config indépendant, pas sous web.tt?

Web.config file depends upon web.tt

+0

Puis-je demander pourquoi cela fait une différence? –

+0

http://nuget.codeplex.com/workitem/1210 – Sly

+1

Pas très propre mais vous pouvez supprimer web.tt du projet et créer le fichier web.config en utilisant TextTransform.exe (http://msdn.microsoft.com/ en-us/library/bb126245.aspx) comme action pré ou post-construction? En fin de compte cela semble être un problème de nuget mais pendant que vous attendez la correction de bugs peut-être cela pourrait atténuer votre douleur. – FuleSnabel

Répondre

3

Oui, vous pouvez. Définissez d'abord une routine de sauvegarde dans un fichier d'inclusion T4.

SaveOutput.tt:

<#@ template language=“C#” hostspecific=“true” #> 
<#@ import namespace=“System.IO” #> 
<#+ 
    void SaveOutput(string fileName) 
    { 
     string templateDirectory = Path.GetDirectoryName(Host.TemplateFile); 
     string outputFilePath = Path.Combine(templateDirectory, fileName); 
     File.WriteAllText(outputFilePath, this.GenerationEnvironment.ToString()); 

     this.GenerationEnvironment.Remove(0, this.GenerationEnvironment.Length); 
    } 
#> 

Maintenant, chaque fois que vous appelez SaveOutput avec un nom de fichier, il rédigera le tampon courant vers ce fichier externe. Par exemple.

Web.tt:

<#@ include file=“SaveOutput.tt” #> 
<# 
    GenerateConfig(); 
    SaveOutput(”..\..\Web.Config”); 
#> 

Si vous voulez générer des fichiers multiples:

<#@ include file=“SaveOutput.tt” #> 
<# 
    GenerateFile1(); 
    SaveOutput(”..\..\File1.txt”); 

    GenerateFile2(); 
    SaveOutput(”..\..\File2.txt”); 
#> 
Questions connexes