Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Templates VS项目模板中的触发器代码生成_Templates_Visual Studio 2013 - Fatal编程技术网

Templates VS项目模板中的触发器代码生成

Templates VS项目模板中的触发器代码生成,templates,visual-studio-2013,Templates,Visual Studio 2013,我创建了一个包含SQL数据库和Linq2SQL dbml文件的项目模板。由于明显缺少代码,使用此模板创建的项目将不会编译,但如果右键单击dbml文件并调用运行自定义工具,则会生成缺少的代码,然后编译成功 我需要对我的项目模板做什么才能触发代码生成?我知道项目模板的IWizard扩展系统,但我不知道如何以编程方式使IDE执行代码生成 因此,问题是:在项目模板中使用的向导实现中,如何触发IDE代码生成?一种可能的方法是向项目中添加预生成事件,该事件运行批处理文件[transformer.bat]并执

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

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


因此,问题是:在项目模板中使用的向导实现中,如何触发IDE代码生成?

一种可能的方法是向项目中添加预生成事件,该事件运行批处理文件[transformer.bat]并执行转换:

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

dir %wdir%\*.tt /b /s > myFiles.txt
并对其运行类似于以下内容的实用程序:

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
)
<PropertyGroup>
    <TransformOnBuild>true</TransformOnBuild>
</PropertyGroup>
.....
这里的关键是预构建事件和创建运行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
)
<PropertyGroup>
    <TransformOnBuild>true</TransformOnBuild>
</PropertyGroup>
.....
在你的tt文件中