如何在TT文件中使用全局變量?你可以在t4模板中使用全局變量嗎?
如果我在頭文件中聲明一個變量,如果我在函數中引用它,會得到一個編譯錯誤。
<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ output extension=".cs" #>
<#
int ValueForThisFile = 35;
SomeFunction();
#>
<#+
void SomeFunction() {
#>
public void GeneratedCode() {
int value = <#=ValueForThisFile#>;
}
<#+
}
#>
我知道我可以把它作爲一個說法,但也有上百個電話,這將是更嚴格的語法,如果我能避免這種情況。如果這是一個文件,我可以硬編碼該值,但有幾十個文件具有不同的設置和常見的包含文件來生成代碼。
謝謝你,弗蘭克。我注意到這是一堂課,因爲我注意到我可以調用其他功能,但對結構沒有大概的瞭解。 – 2014-09-11 12:09:24
如果您想查看生成的類,可以在模板標籤上將debug屬性設置爲true,它將保存生成的文件。這裏是MS解釋它的[docs](http://msdn.microsoft.com/en-us/library/gg586945.aspx)。查看調試屬性部分,它介紹瞭如何將中間代碼文件寫入%Temp%目錄。 – Frank 2014-09-11 13:07:20
因此,在查看[docs](http://msdn.microsoft.com/zh-cn/library/bb126545.aspx)後,更多地指出<#+ #>(Class Feature Blocks)類標記可以包含方法,字段和屬性。從理論上講,你放在這些塊中的代碼將被注入到類的主體中,這樣你就可以放置一個「private int ValueForThisFile;」語句在<#+ #>中,並且能夠從<# #>中設置,並且仍然能夠從其他<#+ #>塊中定義的方法主體訪問它 – Frank 2014-09-11 17:50:10