在VS项目模板中触发代码生成

时间:2014-10-22 22:02:41

标签: templates visual-studio-2013

我创建了一个包含SQL数据库和Linq2SQL dbml文件的项目模板。由于明显缺少代码,使用此模板创建的项目将无法编译,但如果右键单击dbml文件并调用Run Custom Tool,则会生成缺少的代码,然后编译成功。

我需要对项目模板做些什么才能触发代码生成?我知道项目模板的IWizard扩展系统,但我不知道如何以编程方式使IDE执行代码生成。

所以问题是:如何在用于项目模板的向导实现中触发IDE代码生成?

1 个答案:

答案 0 :(得分:0)

一种可能的方法是在项目中添加一个pre-build事件,该事件运行批处理文件[transformer.bat]并执行转换:

使用transformer.bat中的以下内容获取需要转换的文件列表:

dir %wdir%\*.tt /b /s > myFiles.txt

并针对他们运行TextTransform实用程序,类似于以下内容:

for /f %%d in (myFiles.txt) do (
set file_name=%%d
set file_name=!file_name:~0,-3!.%extension%
TextTransform.exe -out !file_name! %%d
)

这里的关键是pre-build事件并创建运行TextTransform Utility的批处理文件。

如果你更倾向于MSBuild integration,你需要想出以下内容:

<PropertyGroup>
    <TransformOnBuild>true</TransformOnBuild>
</PropertyGroup>
.....

在您的tt文件中。

Transforming Templates in a build