1

我正在尝试使用模板 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 指令或程序集引用?)

我对生成器遇到了同样的错误。

我通过添加新项目 Code Generation > Template 创建了这些文件

如何创建 Xaml 文件

该文件的默认结构是并且仍然无法识别模板。

<#+
// <copyright file="Template1.tt" company="HP">
//  Copyright © HP. All Rights Reserved.
// </copyright>

public class Template1 : Template
{
public override string TransformText()
{

    return this.GenerationEnvironment.ToString();
}
}
#>

是我缺少的程序集引用还是指令?

顺便说一句,我也在使用 T4 Toolbox

4

2 回答 2

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" #>

这里的模板指的是什么..我认为它无法找到其名称空间的类..你为什么要扩展它?如果您需要它,请为其提供一个完全限定的命名空间..

于 2011-08-22T09:54:07.593 回答
1

“模板”可能是 T4Toolbox 中的一个类,因此您需要使用程序集和导入指令来引用它。

标准的 VS 基类是“TextTransformation”。

于 2011-08-23T01:50:03.943 回答