[英]VsAddin or T4 for code generation (VS 2008)
我已經為我們的團隊構建了一個用於代碼生成(C#,VS 08)的插件。
如果我在解決方案資源管理器中單擊一個文件,則該插件會創建一個新的菜單項。 在那里,我可以選擇生成2個文件的目標測試項目。
對於代碼生成過程,我需要解決方案資源管理器中所選項目的信息(例如接口,類聲明的泛型類型)。
我的源類看起來像
public class CustomerLogic : BaseBL<T1, T2, T3>, ICustomerBL
生成的容器類
public class CustomerContainer : BaseBLDummyContainer<T1, T2, T3>
生成的虛擬類看起來像
public class CustomerBLDummy : BaseBLDummy<T1, T2, T3, CustomerContainer>, ICustomer
我是怎么意識到的?
我創建了兩個模板(容器和虛擬),將占位符放在空格中,因此兩個模板文件看起來像
容器模板
public class $Classname$ : BaseBLDummyContainer<$T1$, $T2$, $T3$>
虛擬模板
public class $Classname$ : BaseBLDummy<$T1$, $T2$, $T3$, $TContainer$>$, TInterface$
為了生成模板,我已經寫了一些代碼到
您可以看到,“大量”的工作只能生成一些代碼。
非常感謝。
您無需在此處選擇“ k”,您可以混合並匹配加載項和T4。
T4開箱即用地具有非常簡單的UI綁定到Visual Studio,它僅使用自定義工具機制(IVsSingleFileGenerator)將模板文件連接到項目中的輸出文件。 (有關更復雜的輸出,請參見T4Toolbox社區項目)。
但是,T4還在VS中公開了一個服務接口(STextTemplating / ITextTemplating),您可以在VS加載項和VS包中使用該服務接口。
因此,您可以保留外接程序的入口點和核心工作方式,但可以使用T4提供模板引擎,而不必自己維護該部分。 您可能會使用<#@ parameter#>指令將替換參數傳遞到T1,T2,T3等的模板中。
希望這為您提供一些前進的想法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.