【问题标题】:T4 Compiling transformation: The type or namespace name 'Template' could not be foundT4 编译转换:找不到类型或命名空间名称“模板”
【发布时间】:2011-11-01 00:21:06
【问题描述】:

我正在尝试使用模板 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 遇到同样的错误。

我通过添加新项目代码生成> 模板来创建这些文件

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

<#+
// <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

【问题讨论】:

    标签: visual-studio-2010 code-generation t4 t4-toolbox


    【解决方案1】:

    你需要为此添加一堆元标记。我通常添加的标记如下:

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

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

    【讨论】:

    • 抱歉之前没有提到,我会编辑我的帖子。我不需要和输出扩展名,因为我没有生成文件,这就是为什么在文件属性中有一个自定义工具属性,我将其设置为空白而不是 TextTemplatingFileGenerator 链接到此olegsych.com/2008/09/…
    • 编辑了我的答案.. 这个 也不见了
    • 我使用 add>new Item>Code generation > Template 创建了一个新文件,但仍然无法解析该命名空间??对于我认为 C# 应该没问题的语言。
    • 我申请了这个t4toolbox.codeplex.com/discussions/64536,但没有解决我的问题
    • 删除您尝试扩展并查看的模板类
    【解决方案2】:

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

    标准的 VS 基类是“TextTransformation”。

    【讨论】:

      猜你喜欢
      • 2013-04-11
      • 1970-01-01
      • 2017-07-12
      • 2011-05-13
      • 2012-11-01
      • 2013-03-25
      • 2012-06-19
      • 2017-11-29
      相关资源
      最近更新 更多