2012-02-03 75 views
5

假設我有一個C#類的項目(比如說ProjectA),並且這些類不引用項目之外的任何類型和System.dll程序集的類型。 ProjectA中的類可能具有方法,屬性,字段和自定義屬性。類也可能存在於不同的名稱空間中。如何使用T4將類從一個項目轉換爲另一個項目?

如何使用T4將所有這些類(包括方法,屬性,字段和自定義屬性)從ProjectA轉換爲另一個項目(比如ProjectB)中的相關集。

+0

在這種情況下,我通常會添加鏈接到代碼文件,而不是克隆它們。如果你確信你想要一個副本,你可以在你的T4中使用'File.Copy'操作。 – Douglas 2012-02-03 23:25:02

+0

是什麼讓你認爲T4是這份工作的正確工具? – 2012-02-03 23:26:21

+0

是否要從* ProjectA *保留名稱空間或將它們更改爲其他(* ProjectB *)名稱空間? – Matej 2012-02-03 23:27:46

回答

2

沃納,你當然可以做到這一點。一個好的技術是使用VS的代碼模型。 有一些指針,在這裏的例子:http://blogs.msdn.com/b/garethj/archive/2009/09/25/dte-and-t4-better-together.aspx

你會使用代碼模型讀取作爲元數據類無需編譯,然後生成使用元數據作爲輸入。您可能需要查看Oleg Sych的T4 Toolbox(http://t4toolbox.codeplex.com)以將輸出投影到二級項目中。

+2

雖然還沒有最終確定,但我會考慮Roslyn:http://www.microsoft.com/download/en/details.aspx?id=27746 – FuleSnabel 2012-02-05 19:18:30

+0

@GarethJ,謝謝你的建議。我搜索了EnvDTE和T4,並找到了幾個例子。很明顯,我的工作對我來說很不利。 – bloudraak 2012-02-06 20:26:08

+0

@FuleSnabel我開始和Roslyn一起玩,看起來這很適合這種類型的工作,而且工作量少得多。 – bloudraak 2012-02-10 08:36:57

相關問題