在Visual Studio里使用CodeSmith项目
导言
与Visual Studio的紧密整合让你在Visual Studio中就可以完全管理任何CodeSmith项目!这意味着你能在Visual Studio中,保持高效代码生成器的存在,并且无须为了运行代码生成器而切换应用程序。
在Visual Studio中管理CodeSmith项目
要管理 CodeSmith项目,你可以从解决方案管理器窗口中,使用CodeSmith项目文件的右键菜单。
(如右图所示)
菜单选项包括:
- 生成输出 - 将会开始生成的进程以产生你在Code Smith项目里配置的输出。
- 管理输出 - 赋予你管理Code Smith项目的能力。
- 添加输出
- 输出选项 - (如下图所示)仅在Visual Studio中可用,并且允许你控制生成之后的输出选项。
- 添加输出至项目 - 将会把所有CodeSmith项目中的输出包含进你的Visual Studio项目。
- 隐藏输出 - 将会把你CodeSmith项目的所有输出,做成子节点,依赖于CodeSmith 项目文件(现实在下面)。隐藏节点可被收起,因为很多时候生成的代码不应该被触动。消除其它开发者试图修改生成代码的诱惑,这是一个很好的方法。
- 编译时生成 - 这个菜单让你的模板使用动态生成。你也可以在CodeSmith项目的属性页中,指定编译动作(BuildAction)值。(详情在下面)
动态生成(Active Generation)
现在,只需在Visual Studio里指定CodeSmith项目的编译动作,你就可以非常容易地使用动态生成了。
在解决方案管理器中,将CodeSmith项目文件属性里的编译动作设置为“生成”("Generate"),会使得整个生成进程在项目编译之前发生。这意味着CodeSmith项目里的所有输出都会被生成,并且如果你要的话,它们将被包含进Visual Studio项目。
例如:
我们有个BusinessObject.csp的CodeSmith项目在Visual Studio 项目的类库里。这个CSP有4个输出,它们从同一个BusinessObject.cst的CodeSmith模板中生成。
- Order.cs
- Product.cs
- Profile.cs
- Supplier.cs
观察CodeSmith项目的属性,你能够看见文件的编译动作,并且有一个选项来设置它为编译时生成(Generate on Build)。意味着每次你要改动(tweak)数据库的元数据(meta-data), XML属性元数据,或者CodeSmith模板,下次编译时这些更改就会在Visual Studio项目中生效(picked up)。
在开发过程中,这使得你减轻了许多由于改动遍布所有类而频繁发生的开发者问题。
输出窗口的生成反馈
如你看到的下图所示,business object被生成,之后编译过程开始。这是一个非常强大的特性,因为它允许你将强大的代码生成器整合在所有Visual Studio的项目中,而无须切换到CodeSmith Studio或Explorer。