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ディレクティブまたはアセンブリ参照がありませんか?)

Generatorでも同じエラーが発生します。

これらのファイルは、新しいアイテムのコード生成>テンプレートを追加して作成しました

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();
}
}
#>

アセンブリ参照またはディレクティブがありませんか?

ところで、私はT4Toolboxも使用しています

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

'Template'はおそらくT4Toolboxのクラスであるため、アセンブリおよびインポートディレクティブを使用してそれを参照する必要があります。

標準のVS基本クラスは「TextTransformation」です。

于 2011-08-23T01:50:03.943 に答える