T4 Преобразование компиляции: не удалось найти тип или имя пространства имен 'Template' - PullRequest
1 голос
/ 22 августа 2011

Я пытаюсь сгенерировать файл Xaml, используя шаблон T4 и определяя повторно используемый файл 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 Преобразование компиляции: Не удалось найти тип или имя пространства имен 'Template' (отсутствует директива using или ссылка на сборку?)

Я получаюта же ошибка для Генератора.

Я создал этот файл, добавив новый элемент Генерация кода> Шаблон

How to create the Xaml file

Структура файла по умолчанию и до сих пор не распознает Шаблон.

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

Ответы [ 2 ]

3 голосов
/ 22 августа 2011

вам нужно добавить несколько мета-тегов для этого .. которые я обычно добавляю, таковы:

<#@ 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 голос
/ 23 августа 2011

'Template' - это, вероятно, класс из T4Toolbox, поэтому вам нужно сослаться на него с помощью директивы сборки и импорта.

Стандартный базовый класс VS - это TextTransformation.

...