[英]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.