我正在尝试使用Template T4生成一个Xaml文件,并像这样定义一个可重用的文件Xaml.tt
<#@ template language="C#" hostspecific="True" debug="True" #>
<#@ assembly name="System.Xml.dll" #>
<#@ assembly name="System.Xml.Linq.dll" #>
<#@ import namespace="System.Xml" #>
<#@ import namespace="System.Xml.Linq" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.Collections" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="Microsoft.VisualStudio.TextTemplating" #>
<#+
public class Xaml : Template
{
public override string TransformText()
{
#>
// Xaml Content
<#+
return this.GenerationEnvironment.ToString(); }
}
#>
但我有一个错误:无法找到模板命名空间,任何人都有这个想法?还是一样的错误!!令人沮丧!!
错误:T4编译转换:找不到类型或命名空间名称“模板”(您是否缺少using指令或程序集引用?)
我为Generator收到同样的错误。
我通过添加新项代码生成&gt;创建了这些文件。模板
文件的默认结构是,但仍然无法识别模板。
<#+
// <copyright file="Template1.tt" company="HP">
// Copyright © HP. All Rights Reserved.
// </copyright>
public class Template1 : Template
{
public override string TransformText()
{
return this.GenerationEnvironment.ToString();
}
}
#>
是否缺少程序集引用或指令?
BTW我也在使用T4工具箱
答案 0 :(得分:3)
你需要为它添加一堆元标记..我通常添加的元标记如下:
<#@ template language="C#v3.5" hostspecific="True" debug="True" #>
<#@ output extension=".cs" #>
<#@ assembly name="System.Core" #>
<#@ assembly name="System.Xml" #>
<#@ import namespace="System.Xml" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Collections.Generic" #>
这里的模板指的是什么..这是我无法找到它的名称空间的类...为什么要扩展它?如果你需要的话,给它提供一个完全合格的命名空间..
答案 1 :(得分:1)
'Template'可能是来自T4Toolbox的类,因此您需要使用程序集和导入指令来引用它。
标准的VS基类是'TextTransformation'。