3

次のような template.tt ファイルを追加しました。

<#@ template language="C#" debug="true" #>
<#@ output extension=".cs" #>
<#@ import namespace="System" #>
<#@ import namespace="System.Collections.Generic" #>

using System;
using System.Collections.Generic;

namespace Test
{
    public class <#= this.ClassName#>
    {       

    }
}

<#+
    public string ClassName { get; set; }
#>

エラーが表示されます:

An expression block evaluated as Null
at Microsoft.VisualStudio.TextTemplating.ToStringHelper.ToStringWithCulture(Object objectToConvert)...

これらのメッセージが表示されないようにするにはどうすればよいですか?

前もって感謝します

4

2 に答える 2

4

問題は、ClassName プロパティが null であることです。エラーを修正する 1 つの方法は、クラス機能ブロックのコードを次のように変更することです。

<#+
    private string className = "";

    public string ClassName {
        get { return className; }
        set { className = value; }
    }
#>
于 2013-04-18T14:26:30.820 に答える
3

あなたは次のようなものを生成したいと思います

using System;
using System.Collections.Generic;

namespace Test
{
    public class MyClass
    {       

    }
}

<#= this.ClassName#>コードの問題は、クラス機能ブロックに存在しない変数を参照している式ブロックにあります。以下のようにコードを修正します。

<#@ template language="C#" debug="true" #>
<#@ output extension=".cs" #>
<#@ import namespace="System" #>
<#@ import namespace="System.Collections.Generic" #>

using System;
using System.Collections.Generic;

namespace Test
{
    public class <#= this.ClassName #> //Expression Block
    {       
    }
}

<#+ //Class feature block
    public string ClassName = "MyClass";
#>
于 2013-04-18T17:50:23.670 に答える