SubSonic 3自动重新生成ActiveRecord类?

时间:2009-07-17 04:10:51

标签: activerecord msbuild subsonic3

我有一个SQLite数据库和SubSonic3,最后得到了如何从Visual Studio中的.tt生成.cs的线索。我的东西现在建立了。

我可以自动启动MSBuild来构建我的项目,但是我想添加一个预构建事件来干净地重新生成ActiveRecord.cs,这样任何数据库更改都会在未来的单元测试中结束。

如何在Visual Studio GUI中模拟“运行外部工具”?

感谢。

3 个答案:

答案 0 :(得分:0)

您可以从命令行运行TextTemplating工具:

C:\Program Files\Common Files\Microsoft Shared\TextTemplating\1.2\TextTransform.exe "path/to/your/ttfile.tt" -out <outFileName>

使用TextTransform.exe /help获取更多可以使用的命令行参数。

答案 1 :(得分:0)

此时,SubSonic的Settings.ttinclude文件必须在VisualStudio应用程序中运行,并且无法从命令行运行。这是因为Settings.ttinclude使用项目上下文来查找App.config / Web.config文件,以便它可以查找连接字符串。

尝试使用TextTransform.exe通过命令行运行将导致错误:

  

错误:正在运行转换:System.InvalidCastException:无法将“Microsoft.VisualStudio.TextTemplating.CommandLine.CommandLineHost”类型的对象强制转换为“System.IServiceProvider”。

这源于Settings.ttinclude中的这个方法:

public EnvDTE.Project GetCurrentProject()  {
    IServiceProvider _ServiceProvider = (IServiceProvider)Host;
    ...
}

答案 2 :(得分:0)

通过黑客攻击Settings.ttinclude文件,您可以将Subsonic设置为从命令行运行。

只需修改它以将连接字符串设置为GetConnectionString的返回值并取出所有其他逻辑。