2010-08-22 121 views
2

我寫了一個簡單的T4模板(稱之爲「web.tt)生成web.config文件下面是它的要點:訪問T4模板編程

<#@ template debug="true" language="C#" hostSpecific="true" #> 
<#@ output extension=".config" #> 
<?xml version="1.0" encoding="UTF-8"?> 

<configuration> 
    <!-- yadda yadda yadda --> 
</configuration> 

我可以編程方式訪問這個模板?從T4工具箱生成器類我需要這樣的東西:

<#@ include file="web.tt" #> 
<#+ 
// <copyright file="Generator1.tt" company="Microsoft"> 
// Copyright © Microsoft. All Rights Reserved. 
// </copyright> 

public class Generator1 : Generator 
{ 
    protected override void RunCore() 
    { 
     string[] environmentNames = new string[] { "env1", "env2", "env3" }; 
     foreach (string environmentName in environmentNames) 
     { 
      Template webTemplate = // programmatically fetch template in defined in web.tt above. 
      webTemplate.EnvironmentName = environmentName; 
      webTemplate.RenderToFile(environmentName); 
     } 
    } 
} 
#> 

你能指出我在正確的方向:)

回答

1

下面的文章展示瞭如何完成T-SQL存儲過程。

http://www.olegsych.com/2008/09/t4-tutorial-creating-reusable-code-generation-templates/

換句話說,你需要定義你的web.tt模板類,並在 源科的發電機創建它的一個新的實例。

希望這有助於

奧列格

+0

嗨奧列格。我已經閱讀過您的博客文章以及您在T4上撰寫的其他文章。你是男人! 所以唯一的方法是將我的模板的內容嵌入從Template派生的類的TransformText()方法內? – urig 2010-08-23 08:05:33

1

模板有它,你可以打電話programatical的TransformText()方法?你會生成你的文件。

Template webTemplate = // programmatically fetch template in defined in web.tt above. 
webTemplate.EnvironmentName = environmentName; 
string output = webTemplate.TransformText(); 
+0

我發現我的重新定義模板作爲類和壓倒一切的TransformText()包含我的模板的全部內容是有點麻煩。是否有某種方式可以編寫「普通」模板並通過名稱或類型從另一個模板訪問它? – urig 2010-08-23 15:37:36