VS上的T4错误。编译转换:'Write'不是成员

时间:2008-10-17 14:15:09

标签: visual-studio-2008 t4

我正在尝试在VS2008中使用T4模板中的类。

这是我正在做的简化版......

<#@ template language="VB" debug="True" hostspecific="True" #>
<#@ output extension=".vb" debug="True" hostspecific="True" #>
<#@ assembly name="System.Data" #>
<#@ assembly name="System.Windows.Forms.dll" #>
<#@ assembly name="System.xml" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="System.Data.SQLClient" #>
<# Call (New SomeClass).Start()#>
<#+
Private Class SomeClass
    Public Sub Start()
    #>test<#+
    End Sub
End Class 
#>

当我运行此模板时......我收到以下错误...


  

错误1编译转换:'Write'不是其成员   “Microsoft.VisualStudio.TextTemplatingF77BDE667ECAD297F587D3D651053846。   GeneratedTextTransformation.SomeClass'。 D:\ Development \ PrivateProjects \ CodeGeneration \ CodeGeneration \ Generation \ Common \ test2.tt 16 1 CodeGeneration

任何人都可以告诉我为什么会导致错误,更重要的是如何否定它的影响?

1 个答案:

答案 0 :(得分:2)

代码......

#>test<#+

......内部翻译为......

Write("test"); 

由于我的类没有'Write'方法,编译失败。

解决方法是....

<#@ template language="VB" debug="True" hostspecific="True" #>
<#@ output extension=".vb" debug="True" hostspecific="True" #>
<#@ assembly name="System.Data" #>
<#@ assembly name="System.Windows.Forms.dll" #>
<#@ assembly name="System.xml" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="System.Data.SQLClient" #>
<#@ import namespace="Microsoft.VisualStudio.TextTemplating" #>

<# Call (New SomeClass(Me)).Start()#>

<#+
Private Class SomeClass
Private mOutput as TextTransformation
Public Sub New(Output as TextTransformation)
    mOutput = Output
End Sub 
Public Sub Write(SomeText as String)
    mOutput.Write(SomeText)
End Sub 
    Public Sub Start()
        #>test<#+
    End Sub
End Class 
#>

这会导致写入传递给父类进行处理。