我推迟使用生成的代码作为构建过程的一部分,因为害怕它在构建过程中引入的复杂性。简单和实用的C#代码生成(VS 2008或2010)
是否有一种简单的方法将构建时生成的代码集成到应用程序中?
那种代码我想的是类似的资源和设置文件的Visual Studio执行代码生成:
- 有智能感知这里是有价值
- 有很多的属性以及用于描述的属性之间的链接,但不可能在C#中简洁地实现。
- 底层资源是可修改的,代码自动重新生成,无需任何用户交互,也无需理解生成器的内部结构。
对于(非真实世界)例如考虑生成的访问经由类似命名的C#属性(或方法)一个正则表达式的命名捕获基团的预编译。这是我想要生成的各种事情的典型代码:样板化包装器的长片段,其主要功能是启用编译时检查错误(在上面;访问不存在的捕获组或写入和无效的正则表达式)不重要的是,这些属性的智能感知。最后,这个设置应该可以被团队上的其他人轻松使用,只有最少的学习曲线。即,要求手动干预来重新生成代码是绝对不可接受的,也不能接受将生成的代码提交到源代码控制中。最糟糕的是,每个人都应该只需要安装一些扩展;理想情况下,扩展应该可以安装到源代码树中,以便任何检出树的人都可以在没有任何介绍的情况下构建项目。
对于工作得很好,它的关键,将IDE集成是优秀的:更新底层的“资源”定义文件应触发代码的再生无需任何用户交互,最好发电机本身便很容易以后为其他开发人员维护(即发电机调试能力有一定优势)。
最后,一种类似XSLT的方法,其中相同的模板可以应用于各种输入资源是理想的;因为这意味着如果你想要做的只是更新资源,并且因为它使模板重用变得微不足道,你甚至不需要查看实际的生成器代码。
我已经看过T4,但从我看到的这个有一个不太方便的类似于ASP的方法,其中模板和资源没有干净地分割(即,生成器负责查找资源的 - 这使得模板重用变得不那么容易)。
是否有更好的(更干净的)解决方案或运行T4的某种方式,使得相同的模板可以被平凡重用,并且(很像.NET设置文件),任何资源更新都会自动触发重新实现码?
摘要:(!不是模板) 我正在寻找一个代码生成方式,可以自动
- 重新生成代码,而无需开发干预时资源根本的变化。
- 维护起来有点简单
- 能够在几个资源之间共享相同的生成器模板(其中,#1号点可能意味着资源应该引用生成器而不是反之亦然)。
谢谢,我一定会尝试一下,看看它的效果如何! – 2009-11-12 14:49:25