2013-04-05 110 views
7

我正在使用幾個T4模板來生成幾個T4文件,並且它們中的大多數共享很多相同的代碼,所以自然我想從中創建一個函數並將其放在一個不同的文件中,以使所有的T4文件可以訪問。是否可以從T4 .tt模板中的其他文件執行代碼以生成代碼?

但是,我似乎無法找到一種方式,或谷歌的方式來實際使用存儲在另一個文件中的代碼。

這可能嗎?如果是這樣,是否有一個簡單的例子來說明如何去做?

+0

您能否告訴我們更多的情況,因爲答案取決於您如何使用T4,例如Asp.net查看腳手架與您的解決方案中的基本轉換。 – GarethJ 2013-04-05 22:16:01

+0

@GarethJ t4文件正在SQL中查找ID表並生成一個.cs文件,其中的enums與id talble匹配。感謝您的幫助! =) – Kyle 2013-04-06 04:01:26

回答

6

從你的問題,這聽起來像你只是在你的解決方案中的正常模板文件中使用T4。 在這種情況下,您可以使用<#@ include #>指令來提取您的共享代碼。它是一種原始的文本包含機制,類似於C/C++的#include,因此您可以隨意移動或分配到其他文件中。請參閱文檔here

值得注意的是,目前,include指令在ASP.Net視圖腳手架模板中不起作用。

如果您想與常規C#項目共享代碼,這是可能的,但您需要將共享代碼構建到可引用的程序集中。僅僅使用<#@ include #>指令直接引入.cs文件是不可能的,因爲指令不會嵌套在控制或類功能塊內。

您可以使用<#@ assembly #>指令記錄here來引用包含您的共享代碼的助手程序集。

+0

我正在嘗試'<#@ include file =「test.cs」#>'但是如果我嘗試從我的test.cs文件中使用一個類,它說它找不到。 – Kyle 2013-04-08 21:30:49

+0

呵呵,你想包括普通的C#代碼,不是專門的T4片段。我會修改我的答案。 – GarethJ 2013-04-11 08:11:24

相關問題