• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

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

visual-studio-2008 来源:Rory Becker 4次浏览

我想在VS2008的T4模板中使用一个类。VS上的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编译转换:’写’不是 ‘Microsoft.VisualStudio.TextTemplatingF77BDE667ECAD297F587D3D651053846的成员。 GeneratedTextTransformation.SomeClass’。 d:\开发\ PrivateProjects \ CodeGeneration \ CodeGeneration \代\ COMMON \ test2.tt 16 1 CodeGeneration

谁能告诉我,为什么这会导致它的错误,更重要的是如何否定它的作用?

===========解决方案如下:

代码…

#>test<#+ 

…在内部转换为…

Write("test"); 

因为我班上没有一个 ‘写’ 的方法,编译失败。

的解决方法是….

<#@ 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 
#> 

导致写入被传递给处理父类。


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)