2011-07-14 76 views
0

我在VB.NET翻譯TT文件到C#

<#@ template debug="false" hostspecific="true" language="VB" #> 
<#@ assembly name="System" #> 
<#@ assembly name="System.Core" #> 
<#@ assembly name="System.Xml" #> 
<#@ assembly name="System.Xml.Linq" #> 
<#@ output extension=".vb" #> 
<#@ import namespace="System" #> 
<#@ import namespace="System.IO" #> 
<#@ import namespace="System.Linq" #> 
<#@ import namespace="System.Xml" #> 
<#@ import namespace="System.Xml.Linq" #> 
<# 

Dim inputFile= Path.ChangeExtension(Host.TemplateFile, "resx") 
Dim xml As XElement = XElement.Load(Host.ResolvePath(inputFile)) 
Dim dataElements = xml.Elements().Where(Function(x) x.Name = "data") 
Dim resourceTypeName = Path.GetFileNameWithoutExtension(inputFile) 
#> 

' This file is autogenerated 
Public Class <#= resourceTypeName #>Constants 

<# For Each d as XElement in dataElements #> 
Public Const <#= [email protected] #> As String = "<#= [email protected] #>" 
<# Next #> 

End Class 

下面的代碼我做了一個改寫爲C#。但我忘記了一些我認爲的東西。 因爲我得到一個錯誤(ErrorGeneratingOutput)

<#@ template language="C#" #> 
<#@ assembly name="System" #> 
<#@ assembly name="System.Core" #> 
<#@ assembly name="System.Xml" #> 
<#@ assembly name="System.Xml.Linq" #> 
<#@ output extension=".cs" #> 
<#@ import namespace="System" #> 
<#@ import namespace="System.IO" #> 
<#@ import namespace="System.Linq" #> 
<#@ import namespace="System.Xml" #> 
<#@ import namespace="System.Xml.Linq" #> 
<# 
dynamic inputFile = Path.ChangeExtension(Host.TemplateFile, "resx"); 
XElement xml = XElement.Load(Host.ResolvePath(inputFile)); 
dynamic dataElements = xml.Elements().Where(x => x.Name == "data"); 
dynamic resourceTypeName = Path.GetFileNameWithoutExtension(inputFile); 
#> 

'This file is autogenerated 

public class <# resourceTypeName #>Contstants 
{ 
foreach (XElement d in dataElements) { 
    public Const String <#= [email protected] #> = "<#= [email protected] #>"; 
} 
} 

有人誰可以幫我嗎?

更新

我得到第21行一定的誤差,這是該行

public class <# resourceTypeName #>Contstants 

他給的錯誤編譯轉換:;預計

回答

1

變化'This file is autogenerated//This file is autogenerated

另外,在第一個版本在foreach是TT的foreach不是VB一個。試試這個:

<# foreach (XElement d in dataElements) {#> 
    public const string <#= [email protected] #> = "<#= [email protected] #>"; 
<# } #>