Visual studio 2008 T4编译转换时出错:';写';他不是会员
我试图在VS2008中使用T4模板中的类 这是我正在做的一个简化版本Visual studio 2008 T4编译转换时出错:';写';他不是会员,visual-studio-2008,t4,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
<#@ 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.TextTemplatingf77bd667ecad297f587d651053846。 GeneratedTextTransformation.SomeClass'。D:\Development\PrivateProjects\CodeGeneration\CodeGeneration\Generation\Common\test2.tt 16 1 CodeGeneration 有人能告诉我为什么这会导致它产生错误,更重要的是如何消除它的影响吗?代码
#>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
#>
测试
这将导致写入被传递给父类进行处理
<#@ 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
#>