在构建中包含T4生成的c#类

时间:2014-12-03 06:47:42

标签: c# visual-studio msbuild t4

我有一个运行时T4模板,使用它生成一个.cs文件。我需要在我的代码中访问这个生成的文件。我没有看到生成的类文件,所以我可以使用它,但如果我做了一个"显示所有文件"然后将其包含在我的解决方案中并构建,然后我就可以访问生成的文件。

如何使用此生成的c#文件而无需手动更改。

应该是我使用代码

RuntimeTextTemplate runTimeGen = new RuntimeTextTemplate();
File.WriteAllText("RuntimeGenerator3.cs", runTimeGen.TransformText());

在最后一个语句之后我应该能够访问生成的类吗? 是模板文件。我正在使用控制台应用程序。

运行时模板的名称是 RuntimeGenerator.tt

<#@ template language="C#" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>

namespace Controls
{
    public class DropDownControlUtility
    {
        public static string ForeColor
        {
            get
            {
                return "Blue";
            }
        }
    }
}
使用Main方法的

类包含以下代码

class Program
    {
        static void Main(string[] args)
        {
            RuntimeGenerator gen = new RuntimeGenerator();
            File.WriteAllText("DropDownUtility.cs", gen.TransformText());
        }
    }

1 个答案:

答案 0 :(得分:4)

有2种不同的模板Run-time text templateDesign-time text template。使用设计时模板生成的文件会自动包含在项目中。运行时文本模板用于在启动程序时在运行时生成文件,而设计时文本模板允许您在Visual Studio项目中生成程序代码和其他文件。

所以你需要的是创建新的设计时模板(TextTemplate)并将代码放入其中。 生成文件:在解决方案资源管理器中,在任何文件的快捷菜单上,选择“运行自定义工具”或单击“生成”菜单中的“转换所有模板”。您还可以设置项目以生成文件automaically