VSのT4エラー。変換のコンパイル: 'Write'はメンバーではありません
-
03-07-2019 - |
質問
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
これが原因でエラーが発生する理由と、さらに重要なことですが、その影響を無効にする方法を教えてもらえますか?
解決
コード...
#>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
#>
処理のために親クラスに渡される書き込みになります。
所属していません StackOverflow