我添加了看起来像这样的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)...
我应该怎么做以避免看到这些消息?
提前致谢
答案 0 :(得分:4)
问题是ClassName属性为null。解决错误的一种方法是将类功能块中的代码更改为:
<#+
private string className = "";
public string ClassName {
get { return className; }
set { className = value; }
}
#>
答案 1 :(得分: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";
#>